{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Meta Programming"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"1 + 1\""
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prog = \"1 + 1\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "parse(str, start; greedy=true, raise=true)\n",
       "\\end{verbatim}\n",
       "Parse the expression string and return an expression (which could later be passed to eval for execution). \\texttt{start} is the index of the first character to start parsing. If \\texttt{greedy} is \\texttt{true} (default), \\texttt{parse} will try to consume as much input as it can; otherwise, it will stop as soon as it has parsed a valid expression. Incomplete but otherwise syntactically valid expressions will return \\texttt{Expr(:incomplete, \"(error message)\")}. If \\texttt{raise} is \\texttt{true} (default), syntax errors other than incomplete expressions will raise an error. If \\texttt{raise} is \\texttt{false}, \\texttt{parse} will return an expression that will raise an error upon evaluation.\n",
       "\\begin{verbatim}\n",
       "parse(str; raise=true)\n",
       "\\end{verbatim}\n",
       "Parse the expression string greedily, returning a single expression. An error is thrown if there are additional characters after the first expression. If \\texttt{raise} is \\texttt{true} (default), syntax errors will raise an error; otherwise, \\texttt{parse} will return an expression that will raise an error upon evaluation.\n",
       "\\begin{verbatim}\n",
       "parse(type, str, [base])\n",
       "\\end{verbatim}\n",
       "Parse a string as a number. If the type is an integer type, then a base can be specified (the default is 10). If the type is a floating point type, the string is parsed as a decimal floating point number. If the string does not contain a valid number, an error is raised.\n"
      ],
      "text/markdown": [
       "```\n",
       "parse(str, start; greedy=true, raise=true)\n",
       "```\n",
       "\n",
       "Parse the expression string and return an expression (which could later be passed to eval for execution). `start` is the index of the first character to start parsing. If `greedy` is `true` (default), `parse` will try to consume as much input as it can; otherwise, it will stop as soon as it has parsed a valid expression. Incomplete but otherwise syntactically valid expressions will return `Expr(:incomplete, \"(error message)\")`. If `raise` is `true` (default), syntax errors other than incomplete expressions will raise an error. If `raise` is `false`, `parse` will return an expression that will raise an error upon evaluation.\n",
       "\n",
       "```\n",
       "parse(str; raise=true)\n",
       "```\n",
       "\n",
       "Parse the expression string greedily, returning a single expression. An error is thrown if there are additional characters after the first expression. If `raise` is `true` (default), syntax errors will raise an error; otherwise, `parse` will return an expression that will raise an error upon evaluation.\n",
       "\n",
       "```\n",
       "parse(type, str, [base])\n",
       "```\n",
       "\n",
       "Parse a string as a number. If the type is an integer type, then a base can be specified (the default is 10). If the type is a floating point type, the string is parsed as a decimal floating point number. If the string does not contain a valid number, an error is raised.\n"
      ],
      "text/plain": [
       "```\n",
       "parse(str, start; greedy=true, raise=true)\n",
       "```\n",
       "\n",
       "Parse the expression string and return an expression (which could later be passed to eval for execution). `start` is the index of the first character to start parsing. If `greedy` is `true` (default), `parse` will try to consume as much input as it can; otherwise, it will stop as soon as it has parsed a valid expression. Incomplete but otherwise syntactically valid expressions will return `Expr(:incomplete, \"(error message)\")`. If `raise` is `true` (default), syntax errors other than incomplete expressions will raise an error. If `raise` is `false`, `parse` will return an expression that will raise an error upon evaluation.\n",
       "\n",
       "```\n",
       "parse(str; raise=true)\n",
       "```\n",
       "\n",
       "Parse the expression string greedily, returning a single expression. An error is thrown if there are additional characters after the first expression. If `raise` is `true` (default), syntax errors will raise an error; otherwise, `parse` will return an expression that will raise an error upon evaluation.\n",
       "\n",
       "```\n",
       "parse(type, str, [base])\n",
       "```\n",
       "\n",
       "Parse a string as a number. If the type is an integer type, then a base can be specified (the default is 10). If the type is a floating point type, the string is parsed as a decimal floating point number. If the string does not contain a valid number, an error is raised.\n"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc parse"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(1 + 1)"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex1 = parse(prog)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Expr"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "typeof(ex1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "No documentation found.\n",
       "\\textbf{Summary:}\n",
       "\\begin{verbatim}\n",
       "type Expr <: Any\n",
       "\\end{verbatim}\n",
       "\\textbf{Fields:}\n",
       "\\begin{verbatim}\n",
       "head :: Symbol\n",
       "args :: Array{Any,1}\n",
       "typ  :: Any\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "No documentation found.\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "type Expr <: Any\n",
       "```\n",
       "\n",
       "**Fields:**\n",
       "\n",
       "```julia\n",
       "head :: Symbol\n",
       "args :: Array{Any,1}\n",
       "typ  :: Any\n",
       "```\n"
      ],
      "text/plain": [
       "No documentation found.\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "type Expr <: Any\n",
       "```\n",
       "\n",
       "**Fields:**\n",
       "\n",
       "```julia\n",
       "head :: Symbol\n",
       "args :: Array{Any,1}\n",
       "typ  :: Any\n",
       "```\n"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc Expr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(:call,Any[:+,1,1],Any)"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(ex1.head, ex1.args, ex1.typ)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(1 + 1)"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex2 = Expr(:call, :+, 1, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex1 == ex2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The key point here is that Julia code is internally represented as a data structure that is accessible from the language itself."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "dump(x)\n",
       "\\end{verbatim}\n",
       "Show all user-visible structure of a value.\n"
      ],
      "text/markdown": [
       "```\n",
       "dump(x)\n",
       "```\n",
       "\n",
       "Show all user-visible structure of a value.\n"
      ],
      "text/plain": [
       "```\n",
       "dump(x)\n",
       "```\n",
       "\n",
       "Show all user-visible structure of a value.\n"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc dump"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Expr \n",
      "  head: Symbol call\n",
      "  args: Array(Any,(3,))\n",
      "    1: Symbol +\n",
      "    2: Int64 1\n",
      "    3: Int64 1\n",
      "  typ: Any\n"
     ]
    }
   ],
   "source": [
    "dump(ex2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":((4 + 4) / 2)"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex3 = parse(\"(4 + 4) / 2\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Expr \n",
      "  head: Symbol call\n",
      "  args: Array(Any,(3,))\n",
      "    1: Symbol /\n",
      "    2: Expr \n",
      "      head: Symbol call\n",
      "      args: Array(Any,(3,))\n",
      "        1: Symbol +\n",
      "        2: Int64 4\n",
      "        3: Int64 4\n",
      "      typ: Any\n",
      "    3: Int64 2\n",
      "  typ: Any\n"
     ]
    }
   ],
   "source": [
    "dump(ex3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "No documentation found.\n",
       "\\texttt{Base.Meta.show_sexpr} is a generic \\texttt{Function}.\n",
       "\\begin{verbatim}\n",
       "# 5 methods for generic function \"show_sexpr\":\n",
       "show_sexpr(io::IO, ex::QuoteNode, indent::Int64) at meta.jl:31\n",
       "show_sexpr(io::IO, ex::Expr, indent::Int64) at meta.jl:37\n",
       "show_sexpr(io::IO, ex) at meta.jl:25\n",
       "show_sexpr(io::IO, ex, indent::Int64) at meta.jl:26\n",
       "show_sexpr(ex) at meta.jl:24\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "No documentation found.\n",
       "\n",
       "`Base.Meta.show_sexpr` is a generic `Function`.\n",
       "\n",
       "```julia\n",
       "# 5 methods for generic function \"show_sexpr\":\n",
       "show_sexpr(io::IO, ex::QuoteNode, indent::Int64) at meta.jl:31\n",
       "show_sexpr(io::IO, ex::Expr, indent::Int64) at meta.jl:37\n",
       "show_sexpr(io::IO, ex) at meta.jl:25\n",
       "show_sexpr(io::IO, ex, indent::Int64) at meta.jl:26\n",
       "show_sexpr(ex) at meta.jl:24\n",
       "```\n"
      ],
      "text/plain": [
       "No documentation found.\n",
       "\n",
       "`Base.Meta.show_sexpr` is a generic `Function`.\n",
       "\n",
       "```julia\n",
       "# 5 methods for generic function \"show_sexpr\":\n",
       "show_sexpr(io::IO, ex::QuoteNode, indent::Int64) at meta.jl:31\n",
       "show_sexpr(io::IO, ex::Expr, indent::Int64) at meta.jl:37\n",
       "show_sexpr(io::IO, ex) at meta.jl:25\n",
       "show_sexpr(io::IO, ex, indent::Int64) at meta.jl:26\n",
       "show_sexpr(ex) at meta.jl:24\n",
       "```\n"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc Meta.show_sexpr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(:call, :/, (:call, :+, 4, 4), 2)"
     ]
    }
   ],
   "source": [
    "Meta.show_sexpr(ex3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    ":foo == symbol(\"foo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "symbol(x...) -> Symbol\n",
       "\\end{verbatim}\n",
       "Create a \\texttt{Symbol} by concatenating the string representations of the arguments together.\n"
      ],
      "text/markdown": [
       "```\n",
       "symbol(x...) -> Symbol\n",
       "```\n",
       "\n",
       "Create a `Symbol` by concatenating the string representations of the arguments together.\n"
      ],
      "text/plain": [
       "```\n",
       "symbol(x...) -> Symbol\n",
       "```\n",
       "\n",
       "Create a `Symbol` by concatenating the string representations of the arguments together.\n"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc symbol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":var_sym"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "symbol(:var,'_',\"sym\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(::)"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wow = :(::)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Symbol ::\n"
     ]
    }
   ],
   "source": [
    "dump(wow)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(a + b * c + 1)"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    ":(a+b*c+1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    ":(a + b*c + 1)  ==\n",
    "       parse(\"a + b*c + 1\") ==\n",
    "       Expr(:call, :+, :a, Expr(:call, :*, :b, :c), 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "quote  # In[136], line 2:\n",
       "    x = 1 # In[136], line 3:\n",
       "    y = 2 # In[136], line 4:\n",
       "    x + y\n",
       "end"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex = quote\n",
    "   x = 1\n",
    "   y = 2\n",
    "   x + y\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(1 + b)"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = 1\n",
    "ex = :($a + b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":($(Expr(:in, :a, :((1,2,3)))))"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ex = :(a in $:((1,2,3)) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Expr \n",
      "  head: Symbol in\n",
      "  args: Array(Any,(2,))\n",
      "    1: Symbol a\n",
      "    2: Expr \n",
      "      head: Symbol tuple\n",
      "      args: Array(Any,(3,))\n",
      "        1: Int64 1\n",
      "        2: Int64 2\n",
      "        3: Int64 3\n",
      "      typ: Any\n",
      "  typ: Any\n"
     ]
    }
   ],
   "source": [
    "dump(ex)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eval(ex)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    ":(a in $:((1,2,3))) == :(a in $(:((1,2,3))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "make_expr (generic function with 1 method)"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function make_expr(op, opr1, opr2)\n",
    "    opr1f, opr2f = map((opr1, opr2)) do x\n",
    "        isa(x, Number) ? 2*x : x\n",
    "    end\n",
    "    \n",
    "    Expr(:call, op, opr1f, opr2f)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(4 + x)"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "make_expr(:+, 2, :x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "macro sayhello(name)\n",
    "   return :( println(\"Hello, \", $name) )\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, Julia\n"
     ]
    }
   ],
   "source": [
    "@sayhello \"Julia\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "macroexpand(x)\n",
       "\\end{verbatim}\n",
       "Takes the expression \\texttt{x} and returns an equivalent expression with all macros removed (expanded).\n"
      ],
      "text/markdown": [
       "```\n",
       "macroexpand(x)\n",
       "```\n",
       "\n",
       "Takes the expression `x` and returns an equivalent expression with all macros removed (expanded).\n"
      ],
      "text/plain": [
       "```\n",
       "macroexpand(x)\n",
       "```\n",
       "\n",
       "Takes the expression `x` and returns an equivalent expression with all macros removed (expanded).\n"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc macroexpand"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(println(\"Hello, \",\"human\"))"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "macroexpand( :(@sayhello(\"human\")) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "macro showarg(x)\n",
    "   show(x)\n",
    "   # ... remainder of macro, returning an expression\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ":(1 + 2)"
     ]
    }
   ],
   "source": [
    "@showarg 1+2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(if a == b\n",
       "        nothing\n",
       "    else \n",
       "        Base.throw(Base.Main.Base.AssertionError(\"a == b\"))\n",
       "    end)"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "macroexpand(:(@assert a==b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: replacing module MyModule\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "MyModule"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "module MyModule\n",
    "\n",
    "macro wrong_time(ex)\n",
    "  return quote\n",
    "    local t0 = time()\n",
    "    local val = $ex\n",
    "    local t1 = time()\n",
    "    println(\"elapsed time: \", t1-t0, \" seconds\")\n",
    "    val\n",
    "  end\n",
    "end\n",
    "\n",
    "macro right_time(ex)\n",
    "  return quote\n",
    "    local t0 = time()\n",
    "    local val = $(esc(ex))\n",
    "    local t1 = time()\n",
    "    println(\"elapsed time: \", t1-t0, \" seconds\")\n",
    "    val\n",
    "  end\n",
    "end\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(6,\"(2 cross 3)\",\"(2 ∧ 3)\")"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for op = (:×, :⋅, :∧)\n",
    "    @eval ($op)(a,b) = @sprintf \"(%s %s %s)\" a string($op) b\n",
    "    @eval ($op)(a,b,c) = ($op)(($op)(a,b),c)\n",
    "end\n",
    "(2 ⋅ 3, 2 × 3, 2 ∧ 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "+(x::<b>Int64</b>, y::<b>Int64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L8\" target=\"_blank\">int.jl:8</a>"
      ],
      "text/plain": [
       "+(x::Int64, y::Int64) at int.jl:8"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@which 2 + 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# This file is a part of Julia. License is MIT: http://julialang.org/license\n",
      "\n",
      "## integer arithmetic ##\n",
      "\n",
      "const IntTypes = (Int8, UInt8, Int16, UInt16, Int32, UInt32,\n",
      "                  Int64, UInt64, Int128, UInt128)\n",
      "\n",
      "+(x::Int, y::Int) = box(Int,add_int(unbox(Int,x),unbox(Int,y)))\n",
      "<(x::Int, y::Int) = slt_int(unbox(Int,x),unbox(Int,y))\n",
      "\n",
      "for T in IntTypes\n",
      "    @eval begin\n",
      "        -(x::$T) = box($T,neg_int(unbox($T,x)))\n",
      "\n",
      "        if !($T === Int)  # don't overwrite definition from line 8\n",
      "            +(x::$T, y::$T) = box($T, add_int(unbox($T,x),unbox($T,y)))\n",
      "        end\n",
      "        -(x::$T, y::$T) = box($T, sub_int(unbox($T,x),unbox($T,y)))\n",
      "        *(x::$T, y::$T) = box($T, mul_int(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "end\n",
      "\n",
      "/(x::Integer, y::Integer) = float(x)/float(y)\n",
      "inv(x::Integer) = float(one(x))/float(x)\n",
      "\n",
      "isodd(n::Integer) = rem(n,2) != 0\n",
      "iseven(n::Integer) = !isodd(n)\n",
      "\n",
      "signbit(x::Integer) = x < 0\n",
      "signbit(x::Unsigned) = false\n",
      "\n",
      "for T in (Int8,Int16,Int32,Int64,Int128)\n",
      "    @eval flipsign(x::$T, y::$T) = box($T,flipsign_int(unbox($T,x),unbox($T,y)))\n",
      "end\n",
      "\n",
      "flipsign(x::Signed, y::Signed)  = flipsign(promote(x,y)...)\n",
      "flipsign(x::Signed, y::Float32) = flipsign(x, reinterpret(Int32,y))\n",
      "flipsign(x::Signed, y::Float64) = flipsign(x, reinterpret(Int64,y))\n",
      "flipsign(x::Signed, y::Real)    = flipsign(x, -oftype(x,signbit(y)))\n",
      "\n",
      "copysign(x::Signed, y::Signed)  = flipsign(x, x$y)\n",
      "copysign(x::Signed, y::Float32) = copysign(x, reinterpret(Int32,y))\n",
      "copysign(x::Signed, y::Float64) = copysign(x, reinterpret(Int64,y))\n",
      "copysign(x::Signed, y::Real)    = copysign(x, -oftype(x,signbit(y)))\n",
      "\n",
      "abs(x::Unsigned) = x\n",
      "abs(x::Signed) = flipsign(x,x)\n",
      "\n",
      "~(n::Integer) = -n-1\n",
      "\n",
      "unsigned(x::Signed) = reinterpret(typeof(convert(Unsigned,zero(x))), x)\n",
      "unsigned(x::Bool) = convert(Unsigned, x)\n",
      "unsigned(x) = convert(Unsigned, x)\n",
      "signed(x::Unsigned) = reinterpret(typeof(convert(Signed,zero(x))), x)\n",
      "signed(x) = convert(Signed, x)\n",
      "\n",
      "div(x::Signed, y::Unsigned) = flipsign(signed(div(unsigned(abs(x)),y)),x)\n",
      "div(x::Unsigned, y::Signed) = unsigned(flipsign(signed(div(x,unsigned(abs(y)))),y))\n",
      "\n",
      "rem(x::Signed, y::Unsigned) = flipsign(signed(rem(unsigned(abs(x)),y)),x)\n",
      "rem(x::Unsigned, y::Signed) = rem(x,unsigned(abs(y)))\n",
      "\n",
      "fld(x::Signed, y::Unsigned) = div(x,y)-(signbit(x)&(rem(x,y)!=0))\n",
      "fld(x::Unsigned, y::Signed) = div(x,y)-(signbit(y)&(rem(x,y)!=0))\n",
      "\n",
      "mod(x::Signed, y::Unsigned) = rem(y+unsigned(rem(x,y)),y)\n",
      "mod(x::Unsigned, y::Signed) = rem(y+signed(rem(x,y)),y)\n",
      "\n",
      "cld(x::Signed, y::Unsigned) = div(x,y)+(!signbit(x)&(rem(x,y)!=0))\n",
      "cld(x::Unsigned, y::Signed) = div(x,y)+(!signbit(y)&(rem(x,y)!=0))\n",
      "\n",
      "# Don't promote integers for div/rem/mod since there no danger of overflow,\n",
      "# while there is a substantial performance penalty to 64-bit promotion.\n",
      "const Signed64Types = (Int8,Int16,Int32,Int64)\n",
      "const Unsigned64Types = (UInt8,UInt16,UInt32,UInt64)\n",
      "typealias Integer64 Union{Signed64Types...,Unsigned64Types...}\n",
      "\n",
      "for T in Signed64Types\n",
      "    @eval div(x::$T, y::$T) = box($T,sdiv_int(unbox($T,x),unbox($T,y)))\n",
      "    @eval rem(x::$T, y::$T) = box($T,srem_int(unbox($T,x),unbox($T,y)))\n",
      "    @eval mod(x::$T, y::$T) = box($T,smod_int(unbox($T,x),unbox($T,y)))\n",
      "end\n",
      "for T in Unsigned64Types\n",
      "    @eval div(x::$T, y::$T) = box($T,udiv_int(unbox($T,x),unbox($T,y)))\n",
      "    @eval rem(x::$T, y::$T) = box($T,urem_int(unbox($T,x),unbox($T,y)))\n",
      "end\n",
      "\n",
      "mod{T<:Unsigned}(x::T, y::T) = rem(x,y)\n",
      "\n",
      "fld{T<:Unsigned}(x::T, y::T) = div(x,y)\n",
      "fld{T<:Integer }(x::T, y::T) = div(x,y)-(signbit(x$y)&(rem(x,y)!=0))\n",
      "\n",
      "cld{T<:Unsigned}(x::T, y::T) = div(x,y)+(rem(x,y)!=0)\n",
      "cld{T<:Integer }(x::T, y::T) = div(x,y)+(!signbit(x$y)&(rem(x,y)!=0))\n",
      "\n",
      "## integer bitwise operations ##\n",
      "\n",
      "for T in IntTypes\n",
      "    @eval begin\n",
      "        ~(x::$T) = box($T,not_int(unbox($T,x)))\n",
      "\n",
      "        (&)(x::$T, y::$T) = box($T,and_int(unbox($T,x),unbox($T,y)))\n",
      "        (|)(x::$T, y::$T) = box($T, or_int(unbox($T,x),unbox($T,y)))\n",
      "        ($)(x::$T, y::$T) = box($T,xor_int(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "    for S in IntTypes\n",
      "        (S === Int128 || S === UInt128) && continue\n",
      "        @eval begin\n",
      "            <<(x::$T,  y::$S) = box($T, shl_int(unbox($T,x),unbox($S,y)))\n",
      "            >>>(x::$T, y::$S) = box($T,lshr_int(unbox($T,x),unbox($S,y)))\n",
      "        end\n",
      "        if issubtype(T,Unsigned)\n",
      "            @eval >>(x::$T, y::$S) = box($T,lshr_int(unbox($T,x),unbox($S,y)))\n",
      "        else\n",
      "            @eval >>(x::$T, y::$S) = box($T,ashr_int(unbox($T,x),unbox($S,y)))\n",
      "        end\n",
      "    end\n",
      "end\n",
      "\n",
      "bswap(x::Int8)    = x\n",
      "bswap(x::UInt8)   = x\n",
      "bswap(x::Int16)   = box(Int16,bswap_int(unbox(Int16,x)))\n",
      "bswap(x::UInt16)  = box(UInt16,bswap_int(unbox(UInt16,x)))\n",
      "bswap(x::Int32)   = box(Int32,bswap_int(unbox(Int32,x)))\n",
      "bswap(x::UInt32)  = box(UInt32,bswap_int(unbox(UInt32,x)))\n",
      "bswap(x::Int64)   = box(Int64,bswap_int(unbox(Int64,x)))\n",
      "bswap(x::UInt64)  = box(UInt64,bswap_int(unbox(UInt64,x)))\n",
      "bswap(x::Int128)  = box(Int128,bswap_int(unbox(Int128,x)))\n",
      "bswap(x::UInt128) = box(UInt128,bswap_int(unbox(UInt128,x)))\n",
      "\n",
      "for T in IntTypes\n",
      "    @eval begin\n",
      "        count_ones(x::$T)     = Int(box($T,ctpop_int(unbox($T,x))))\n",
      "        leading_zeros(x::$T)  = Int(box($T,ctlz_int(unbox($T,x))))\n",
      "        trailing_zeros(x::$T) = Int(box($T,cttz_int(unbox($T,x))))\n",
      "    end\n",
      "end\n",
      "count_zeros(  x::Integer) = count_ones(~x)\n",
      "leading_ones( x::Integer) = leading_zeros(~x)\n",
      "trailing_ones(x::Integer) = trailing_zeros(~x)\n",
      "\n",
      "## integer comparisons ##\n",
      "\n",
      "for T in IntTypes\n",
      "    if issubtype(T,Signed)\n",
      "        if !(T === Int)  # don't overwrite definition from line 9\n",
      "            @eval <( x::$T, y::$T) = slt_int(unbox($T,x),unbox($T,y))\n",
      "        end\n",
      "        @eval <=(x::$T, y::$T) = sle_int(unbox($T,x),unbox($T,y))\n",
      "    else\n",
      "        @eval <( x::$T, y::$T) = ult_int(unbox($T,x),unbox($T,y))\n",
      "        @eval <=(x::$T, y::$T) = ule_int(unbox($T,x),unbox($T,y))\n",
      "    end\n",
      "end\n",
      "\n",
      "==(x::Signed,   y::Unsigned) = (x >= 0) & (unsigned(x) == y)\n",
      "==(x::Unsigned, y::Signed  ) = (y >= 0) & (x == unsigned(y))\n",
      "<( x::Signed,   y::Unsigned) = (x <  0) | (unsigned(x) <  y)\n",
      "<( x::Unsigned, y::Signed  ) = (y >  0) & (x <  unsigned(y))\n",
      "<=(x::Signed,   y::Unsigned) = (x <= 0) | (unsigned(x) <= y)\n",
      "<=(x::Unsigned, y::Signed  ) = (y >= 0) & (x <= unsigned(y))\n",
      "\n",
      "## integer conversions ##\n",
      "\n",
      "for to in tuple(IntTypes...), from in tuple(IntTypes...,Bool)\n",
      "    if !(to === from)\n",
      "        if to.size < from.size\n",
      "            if issubtype(to, Signed)\n",
      "                if issubtype(from, Unsigned)\n",
      "                    @eval convert(::Type{$to}, x::($from)) = box($to,checked_trunc_sint($to,check_top_bit(unbox($from,x))))\n",
      "                else\n",
      "                    @eval convert(::Type{$to}, x::($from)) = box($to,checked_trunc_sint($to,unbox($from,x)))\n",
      "                end\n",
      "            else\n",
      "                @eval convert(::Type{$to}, x::($from)) = box($to,checked_trunc_uint($to,unbox($from,x)))\n",
      "            end\n",
      "            @eval rem(x::($from), ::Type{$to}) = box($to,trunc_int($to,unbox($from,x)))\n",
      "        elseif from.size < to.size || from === Bool\n",
      "            if issubtype(from, Signed)\n",
      "                if issubtype(to, Unsigned)\n",
      "                    @eval convert(::Type{$to}, x::($from)) = box($to,sext_int($to,check_top_bit(unbox($from,x))))\n",
      "                else\n",
      "                    @eval convert(::Type{$to}, x::($from)) = box($to,sext_int($to,unbox($from,x)))\n",
      "                end\n",
      "                @eval rem(x::($from), ::Type{$to}) = box($to,sext_int($to,unbox($from,x)))\n",
      "            else\n",
      "                @eval convert(::Type{$to}, x::($from)) = box($to,zext_int($to,unbox($from,x)))\n",
      "                @eval rem(x::($from), ::Type{$to}) = convert($to,x)\n",
      "            end\n",
      "        else\n",
      "            if !(issubtype(from,Signed) === issubtype(to,Signed))\n",
      "                # raise InexactError if x's top bit is set\n",
      "                @eval convert(::Type{$to}, x::($from)) = box($to,check_top_bit(unbox($from,x)))\n",
      "            else\n",
      "                @eval convert(::Type{$to}, x::($from)) = box($to,unbox($from,x))\n",
      "            end\n",
      "            @eval rem(x::($from), ::Type{$to}) = box($to,unbox($from,x))\n",
      "        end\n",
      "    end\n",
      "end\n",
      "\n",
      "rem{T<:Integer}(x::T, ::Type{T}) = x\n",
      "rem(x::Integer, ::Type{Bool}) = ((x&1)!=0)\n",
      "mod{T<:Integer}(x::Integer, ::Type{T}) = rem(x, T)\n",
      "\n",
      "for to in (Int8, Int16, Int32, Int64)\n",
      "    @eval begin\n",
      "        convert(::Type{$to}, x::Float32) = box($to,checked_fptosi($to,unbox(Float32,x)))\n",
      "        convert(::Type{$to}, x::Float64) = box($to,checked_fptosi($to,unbox(Float64,x)))\n",
      "    end\n",
      "end\n",
      "\n",
      "for to in (UInt8, UInt16, UInt32, UInt64)\n",
      "    @eval begin\n",
      "        convert(::Type{$to}, x::Float32) = box($to,checked_fptoui($to,unbox(Float32,x)))\n",
      "        convert(::Type{$to}, x::Float64) = box($to,checked_fptoui($to,unbox(Float64,x)))\n",
      "    end\n",
      "end\n",
      "\n",
      "for Ti in (Int128,UInt128)\n",
      "    for Tf in (Float32,Float64)\n",
      "        @eval function convert(::Type{$Ti},x::$Tf)\n",
      "            isinteger(x) || throw(InexactError())\n",
      "            trunc($Ti,x)\n",
      "        end\n",
      "    end\n",
      "end\n",
      "\n",
      "convert(::Type{Signed}, x::UInt8  ) = convert(Int8,x)\n",
      "convert(::Type{Signed}, x::UInt16 ) = convert(Int16,x)\n",
      "convert(::Type{Signed}, x::UInt32 ) = convert(Int32,x)\n",
      "convert(::Type{Signed}, x::UInt64 ) = convert(Int64,x)\n",
      "convert(::Type{Signed}, x::UInt128) = convert(Int128,x)\n",
      "convert(::Type{Signed}, x::Float32) = convert(Int,x)\n",
      "convert(::Type{Signed}, x::Float64) = convert(Int,x)\n",
      "convert(::Type{Signed}, x::Bool)    = convert(Int,x)\n",
      "\n",
      "convert(::Type{Unsigned}, x::Int8   ) = convert(UInt8,x)\n",
      "convert(::Type{Unsigned}, x::Int16  ) = convert(UInt16,x)\n",
      "convert(::Type{Unsigned}, x::Int32  ) = convert(UInt32,x)\n",
      "convert(::Type{Unsigned}, x::Int64  ) = convert(UInt64,x)\n",
      "convert(::Type{Unsigned}, x::Int128 ) = convert(UInt128,x)\n",
      "convert(::Type{Unsigned}, x::Float32) = convert(UInt,x)\n",
      "convert(::Type{Unsigned}, x::Float64) = convert(UInt,x)\n",
      "convert(::Type{Unsigned}, x::Bool)    = convert(UInt,x)\n",
      "\n",
      "convert(::Type{Integer}, x::Integer) = x\n",
      "convert(::Type{Integer}, x::Real) = convert(Signed,x)\n",
      "\n",
      "round(x::Integer) = x\n",
      "trunc(x::Integer) = x\n",
      "floor(x::Integer) = x\n",
      " ceil(x::Integer) = x\n",
      "\n",
      "round{T<:Integer}(::Type{T},x::Integer) = convert(T,x)\n",
      "trunc{T<:Integer}(::Type{T},x::Integer) = convert(T,x)\n",
      "floor{T<:Integer}(::Type{T},x::Integer) = convert(T,x)\n",
      " ceil{T<:Integer}(::Type{T},x::Integer) = convert(T,x)\n",
      "\n",
      "## integer construction ##\n",
      "\n",
      "macro int128_str(s)\n",
      "    parse(Int128,s)\n",
      "end\n",
      "\n",
      "macro uint128_str(s)\n",
      "    parse(UInt128,s)\n",
      "end\n",
      "\n",
      "macro big_str(s)\n",
      "    n = tryparse(BigInt,s)\n",
      "    !isnull(n) && return get(n)\n",
      "    n = tryparse(BigFloat,s)\n",
      "    !isnull(n) && return get(n)\n",
      "    message = \"invalid number format $s for BigInt or BigFloat\"\n",
      "    :(throw(ArgumentError($message)))\n",
      "end\n",
      "\n",
      "## system word size ##\n",
      "\n",
      "const WORD_SIZE = Int(Int.size)*8\n",
      "\n",
      "## integer promotions ##\n",
      "\n",
      "promote_rule(::Type{Int16},  ::Type{Int8} ) = Int16\n",
      "promote_rule(::Type{Int32},  ::Type{Int8} ) = Int32\n",
      "promote_rule(::Type{Int32},  ::Type{Int16}) = Int32\n",
      "promote_rule(::Type{Int64},  ::Type{Int8} ) = Int64\n",
      "promote_rule(::Type{Int64},  ::Type{Int16}) = Int64\n",
      "promote_rule(::Type{Int64},  ::Type{Int32}) = Int64\n",
      "promote_rule(::Type{Int128}, ::Type{Int8} ) = Int128\n",
      "promote_rule(::Type{Int128}, ::Type{Int16}) = Int128\n",
      "promote_rule(::Type{Int128}, ::Type{Int32}) = Int128\n",
      "promote_rule(::Type{Int128}, ::Type{Int64}) = Int128\n",
      "\n",
      "promote_rule(::Type{UInt16},  ::Type{UInt8} ) = UInt16\n",
      "promote_rule(::Type{UInt32},  ::Type{UInt8} ) = UInt32\n",
      "promote_rule(::Type{UInt32},  ::Type{UInt16}) = UInt32\n",
      "promote_rule(::Type{UInt64},  ::Type{UInt8} ) = UInt64\n",
      "promote_rule(::Type{UInt64},  ::Type{UInt16}) = UInt64\n",
      "promote_rule(::Type{UInt64},  ::Type{UInt32}) = UInt64\n",
      "promote_rule(::Type{UInt128}, ::Type{UInt8} ) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{UInt16}) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{UInt32}) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{UInt64}) = UInt128\n",
      "\n",
      "promote_rule(::Type{UInt8}, ::Type{Int8}  ) = Int\n",
      "promote_rule(::Type{UInt8}, ::Type{Int16} ) = Int\n",
      "promote_rule(::Type{UInt8}, ::Type{Int32} ) = Int\n",
      "promote_rule(::Type{UInt8}, ::Type{Int64} ) = Int64\n",
      "promote_rule(::Type{UInt8}, ::Type{Int128}) = Int128\n",
      "\n",
      "promote_rule(::Type{UInt16}, ::Type{Int8}  ) = Int\n",
      "promote_rule(::Type{UInt16}, ::Type{Int16} ) = Int\n",
      "promote_rule(::Type{UInt16}, ::Type{Int32} ) = Int\n",
      "promote_rule(::Type{UInt16}, ::Type{Int64} ) = Int64\n",
      "promote_rule(::Type{UInt16}, ::Type{Int128}) = Int128\n",
      "\n",
      "if WORD_SIZE == 64\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int8} ) = Int\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int16}) = Int\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int32}) = Int\n",
      "else\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int8} ) = UInt\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int16}) = UInt\n",
      "    promote_rule(::Type{UInt32}, ::Type{Int32}) = UInt\n",
      "end\n",
      "promote_rule(::Type{UInt32}, ::Type{Int64} ) = Int64\n",
      "promote_rule(::Type{UInt32}, ::Type{Int128}) = Int128\n",
      "\n",
      "promote_rule(::Type{UInt64}, ::Type{Int8}  ) = UInt64\n",
      "promote_rule(::Type{UInt64}, ::Type{Int16} ) = UInt64\n",
      "promote_rule(::Type{UInt64}, ::Type{Int32} ) = UInt64\n",
      "promote_rule(::Type{UInt64}, ::Type{Int64} ) = UInt64\n",
      "promote_rule(::Type{UInt64}, ::Type{Int128}) = Int128\n",
      "\n",
      "promote_rule(::Type{UInt128}, ::Type{Int8}  ) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{Int16} ) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{Int32} ) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{Int64} ) = UInt128\n",
      "promote_rule(::Type{UInt128}, ::Type{Int128}) = UInt128\n",
      "\n",
      "## traits ##\n",
      "\n",
      "typemin(::Type{Int8  }) = Int8(-128)\n",
      "typemax(::Type{Int8  }) = Int8(127)\n",
      "typemin(::Type{UInt8 }) = UInt8(0)\n",
      "typemax(::Type{UInt8 }) = UInt8(255)\n",
      "typemin(::Type{Int16 }) = Int16(-32768)\n",
      "typemax(::Type{Int16 }) = Int16(32767)\n",
      "typemin(::Type{UInt16}) = UInt16(0)\n",
      "typemax(::Type{UInt16}) = UInt16(65535)\n",
      "typemin(::Type{Int32 }) = Int32(-2147483648)\n",
      "typemax(::Type{Int32 }) = Int32(2147483647)\n",
      "typemin(::Type{UInt32}) = UInt32(0)\n",
      "typemax(::Type{UInt32}) = UInt32(4294967295)\n",
      "typemin(::Type{Int64 }) = -9223372036854775808\n",
      "typemax(::Type{Int64 }) = 9223372036854775807\n",
      "typemin(::Type{UInt64}) = UInt64(0)\n",
      "typemax(::Type{UInt64}) = 0xffffffffffffffff\n",
      "@eval typemin(::Type{UInt128}) = $(UInt128(0))\n",
      "@eval typemax(::Type{UInt128}) = $(box(UInt128,unbox(Int128,convert(Int128,-1))))\n",
      "@eval typemin(::Type{Int128} ) = $(convert(Int128,1)<<127)\n",
      "@eval typemax(::Type{Int128} ) = $(box(Int128,unbox(UInt128,typemax(UInt128)>>1)))\n",
      "\n",
      "widen(::Type{Int8}) = Int\n",
      "widen(::Type{Int16}) = Int\n",
      "widen(::Type{Int32}) = Int64\n",
      "widen(::Type{Int64}) = Int128\n",
      "widen(::Type{UInt8}) = UInt\n",
      "widen(::Type{UInt16}) = UInt\n",
      "widen(::Type{UInt32}) = UInt64\n",
      "widen(::Type{UInt64}) = UInt128\n",
      "\n",
      "# a few special cases,\n",
      "# Int64*UInt64 => Int128\n",
      "# |x|<=2^(k-1), |y|<=2^k-1   =>   |x*y|<=2^(2k-1)-1\n",
      "widemul(x::Signed,y::Unsigned) = widen(x)*signed(widen(y))\n",
      "widemul(x::Unsigned,y::Signed) = signed(widen(x))*widen(y)\n",
      "# multplication by Bool doesn't require widening\n",
      "widemul(x::Bool,y::Bool) = x*y\n",
      "widemul(x::Bool,y::Number) = x*y\n",
      "widemul(x::Number,y::Bool) = x*y\n",
      "\n",
      "\n",
      "## wide multiplication, Int128 multiply and divide ##\n",
      "\n",
      "if WORD_SIZE == 32\n",
      "    function widemul(u::Int64, v::Int64)\n",
      "        local u0::UInt64, v0::UInt64, w0::UInt64\n",
      "        local u1::Int64, v1::Int64, w1::UInt64, w2::Int64, t::UInt64\n",
      "\n",
      "        u0 = u&0xffffffff; u1 = u>>32\n",
      "        v0 = v&0xffffffff; v1 = v>>32\n",
      "        w0 = u0*v0\n",
      "        t = reinterpret(UInt64,u1)*v0 + (w0>>>32)\n",
      "        w2 = reinterpret(Int64,t) >> 32\n",
      "        w1 = u0*reinterpret(UInt64,v1) + (t&0xffffffff)\n",
      "        hi = u1*v1 + w2 + (reinterpret(Int64,w1) >> 32)\n",
      "        lo = w0&0xffffffff + (w1 << 32)\n",
      "        Int128(hi)<<64 + Int128(lo)\n",
      "    end\n",
      "\n",
      "    function widemul(u::UInt64, v::UInt64)\n",
      "        local u0::UInt64, v0::UInt64, w0::UInt64\n",
      "        local u1::UInt64, v1::UInt64, w1::UInt64, w2::UInt64, t::UInt64\n",
      "\n",
      "        u0 = u&0xffffffff; u1 = u>>>32\n",
      "        v0 = v&0xffffffff; v1 = v>>>32\n",
      "        w0 = u0*v0\n",
      "        t = u1*v0 + (w0>>>32)\n",
      "        w2 = t>>>32\n",
      "        w1 = u0*v1 + (t&0xffffffff)\n",
      "        hi = u1*v1 + w2 + (w1 >>> 32)\n",
      "        lo = w0&0xffffffff + (w1 << 32)\n",
      "        UInt128(hi)<<64 + UInt128(lo)\n",
      "    end\n",
      "\n",
      "    function *(u::Int128, v::Int128)\n",
      "        u0 = u % UInt64; u1 = Int64(u>>64)\n",
      "        v0 = v % UInt64; v1 = Int64(v>>64)\n",
      "        lolo = widemul(u0, v0)\n",
      "        lohi = widemul(reinterpret(Int64,u0), v1)\n",
      "        hilo = widemul(u1, reinterpret(Int64,v0))\n",
      "        t = reinterpret(UInt128,hilo) + (lolo>>>64)\n",
      "        w1 = reinterpret(UInt128,lohi) + (t&0xffffffffffffffff)\n",
      "        Int128(lolo&0xffffffffffffffff) + reinterpret(Int128,w1)<<64\n",
      "    end\n",
      "\n",
      "    function *(u::UInt128, v::UInt128)\n",
      "        u0 = u % UInt64; u1 = UInt64(u>>>64)\n",
      "        v0 = v % UInt64; v1 = UInt64(v>>>64)\n",
      "        lolo = widemul(u0, v0)\n",
      "        lohi = widemul(u0, v1)\n",
      "        hilo = widemul(u1, v0)\n",
      "        t = hilo + (lolo>>>64)\n",
      "        w1 = lohi + (t&0xffffffffffffffff)\n",
      "        (lolo&0xffffffffffffffff) + UInt128(w1)<<64\n",
      "    end\n",
      "\n",
      "    div(x::Int128, y::Int128) = Int128(div(BigInt(x),BigInt(y)))\n",
      "    div(x::UInt128, y::UInt128) = UInt128(div(BigInt(x),BigInt(y)))\n",
      "\n",
      "    rem(x::Int128, y::Int128) = Int128(rem(BigInt(x),BigInt(y)))\n",
      "    rem(x::UInt128, y::UInt128) = UInt128(rem(BigInt(x),BigInt(y)))\n",
      "\n",
      "    mod(x::Int128, y::Int128) = Int128(mod(BigInt(x),BigInt(y)))\n",
      "\n",
      "    <<( x::Int128,  y::Int) = y == 0 ? x : box(Int128,shl_int(unbox(Int128,x),unbox(Int,y)))\n",
      "    <<( x::UInt128, y::Int) = y == 0 ? x : box(UInt128,shl_int(unbox(UInt128,x),unbox(Int,y)))\n",
      "    >>( x::Int128,  y::Int) = y == 0 ? x : box(Int128,ashr_int(unbox(Int128,x),unbox(Int,y)))\n",
      "    >>( x::UInt128, y::Int) = y == 0 ? x : box(UInt128,lshr_int(unbox(UInt128,x),unbox(Int,y)))\n",
      "    >>>(x::Int128,  y::Int) = y == 0 ? x : box(Int128,lshr_int(unbox(Int128,x),unbox(Int,y)))\n",
      "    >>>(x::UInt128, y::Int) = y == 0 ? x : box(UInt128,lshr_int(unbox(UInt128,x),unbox(Int,y)))\n",
      "else\n",
      "    *(x::Int128,  y::Int128)  = box(Int128,mul_int(unbox(Int128,x),unbox(Int128,y)))\n",
      "    *(x::UInt128, y::UInt128) = box(UInt128,mul_int(unbox(UInt128,x),unbox(UInt128,y)))\n",
      "\n",
      "    div(x::Int128,  y::Int128)  = box(Int128,sdiv_int(unbox(Int128,x),unbox(Int128,y)))\n",
      "    div(x::UInt128, y::UInt128) = box(UInt128,udiv_int(unbox(UInt128,x),unbox(UInt128,y)))\n",
      "\n",
      "    rem(x::Int128,  y::Int128)  = box(Int128,srem_int(unbox(Int128,x),unbox(Int128,y)))\n",
      "    rem(x::UInt128, y::UInt128) = box(UInt128,urem_int(unbox(UInt128,x),unbox(UInt128,y)))\n",
      "\n",
      "    mod(x::Int128, y::Int128) = box(Int128,smod_int(unbox(Int128,x),unbox(Int128,y)))\n",
      "end\n",
      "\n",
      "## checked +, - and *\n",
      "\n",
      "# requires int arithmetic defined, for the loops to work\n",
      "\n",
      "for T in (Int8,Int16,Int32,Int64)#,Int128) ## FIXME: #4905\n",
      "    @eval begin\n",
      "        checked_add(x::$T, y::$T) = box($T,checked_sadd(unbox($T,x),unbox($T,y)))\n",
      "        checked_sub(x::$T, y::$T) = box($T,checked_ssub(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "end\n",
      "for T in (Int16,Int32)\n",
      "    @eval begin\n",
      "        checked_mul(x::$T, y::$T) = box($T,checked_smul(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "end\n",
      "for T in (UInt8,UInt16,UInt32,UInt64)#,UInt128) ## FIXME: #4905\n",
      "    @eval begin\n",
      "        checked_add(x::$T, y::$T) = box($T,checked_uadd(unbox($T,x),unbox($T,y)))\n",
      "        checked_sub(x::$T, y::$T) = box($T,checked_usub(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "end\n",
      "for T in (UInt16,UInt32)\n",
      "    @eval begin\n",
      "        checked_mul(x::$T, y::$T) = box($T,checked_umul(unbox($T,x),unbox($T,y)))\n",
      "    end\n",
      "end\n",
      "\n",
      "# checked mul is broken for 8-bit types (LLVM bug?) ## FIXME: #4905\n",
      "\n",
      "for T in (Int8,UInt8)\n",
      "    @eval function checked_mul(x::$T, y::$T)\n",
      "        xy = widemul(x,y)\n",
      "        (typemin($T) <= xy <= typemax($T)) || throw(OverflowError())\n",
      "        return xy % $T\n",
      "    end\n",
      "end\n",
      "\n",
      "if WORD_SIZE == 32\n",
      "    for T in (Int64,UInt64)\n",
      "        @eval function checked_mul(x::$T, y::$T)\n",
      "            xy = Int128(x)*Int128(y)\n",
      "            (typemin($T) <= xy <= typemax($T)) || throw(OverflowError())\n",
      "            return xy % $T\n",
      "        end\n",
      "    end\n",
      "else\n",
      "    checked_mul(x::Int64, y::Int64)   = box(Int64,checked_smul(unbox(Int64,x),unbox(Int64,y)))\n",
      "    checked_mul(x::UInt64, y::UInt64) = box(UInt64,checked_umul(unbox(UInt64,x),unbox(UInt64,y)))\n",
      "end\n",
      "\n",
      "# checked ops are broken for 128-bit types (LLVM bug) ## FIXME: #4905\n",
      "\n",
      "checked_add(x::Int128, y::Int128) = x + y\n",
      "checked_sub(x::Int128, y::Int128) = x - y\n",
      "checked_mul(x::Int128, y::Int128) = x * y\n",
      "\n",
      "checked_add(x::UInt128, y::UInt128) = x + y\n",
      "checked_sub(x::UInt128, y::UInt128) = x - y\n",
      "checked_mul(x::UInt128, y::UInt128) = x * y\n"
     ]
    }
   ],
   "source": [
    "@less 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unknown editor: no line number information passed.\n",
      "The method is defined at line 8.\n"
     ]
    }
   ],
   "source": [
    "@edit 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clipboard(:(1+1))\n",
    "# Paste then we get\n",
    "1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "parseip\n",
      "IPv6\n",
      "listen\n",
      "recvfrom\n"
     ]
    }
   ],
   "source": [
    "apropos(\"IPv6\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 158,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "171 methods for generic function <b>+</b>:<ul><li> +(x::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bool.jl#L33\" target=\"_blank\">bool.jl:33</a><li> +(x::<b>Bool</b>, y::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bool.jl#L36\" target=\"_blank\">bool.jl:36</a><li> +(y::<b>AbstractFloat</b>, x::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bool.jl#L46\" target=\"_blank\">bool.jl:46</a><li> +(x::<b>Int64</b>, y::<b>Int64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L8\" target=\"_blank\">int.jl:8</a><li> +(x::<b>Int8</b>, y::<b>Int8</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>UInt8</b>, y::<b>UInt8</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>Int16</b>, y::<b>Int16</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>UInt16</b>, y::<b>UInt16</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>Int32</b>, y::<b>Int32</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>UInt32</b>, y::<b>UInt32</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>UInt64</b>, y::<b>UInt64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>Int128</b>, y::<b>Int128</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>UInt128</b>, y::<b>UInt128</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L16\" target=\"_blank\">int.jl:16</a><li> +(x::<b>Integer</b>, y::<b>Ptr{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pointer.jl#L77\" target=\"_blank\">pointer.jl:77</a><li> +(x::<b>Float32</b>, y::<b>Float32</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L207\" target=\"_blank\">float.jl:207</a><li> +(x::<b>Float64</b>, y::<b>Float64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L208\" target=\"_blank\">float.jl:208</a><li> +(z::<b>Complex{T<:Real}</b>, w::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L111\" target=\"_blank\">complex.jl:111</a><li> +(x::<b>Bool</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L118\" target=\"_blank\">complex.jl:118</a><li> +(z::<b>Complex{Bool}</b>, x::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L119\" target=\"_blank\">complex.jl:119</a><li> +(x::<b>Bool</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L125\" target=\"_blank\">complex.jl:125</a><li> +(z::<b>Complex{T<:Real}</b>, x::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L126\" target=\"_blank\">complex.jl:126</a><li> +(x::<b>Real</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L132\" target=\"_blank\">complex.jl:132</a><li> +(z::<b>Complex{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L133\" target=\"_blank\">complex.jl:133</a><li> +(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L144\" target=\"_blank\">complex.jl:144</a><li> +(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L145\" target=\"_blank\">complex.jl:145</a><li> +(x::<b>Rational{T<:Integer}</b>, y::<b>Rational{T<:Integer}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/rational.jl#L179\" target=\"_blank\">rational.jl:179</a><li> +(x::<b>Bool</b>, A::<b>AbstractArray{Bool,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L136\" target=\"_blank\">arraymath.jl:136</a><li> +(x::<b>Integer</b>, y::<b>Char</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/char.jl#L43\" target=\"_blank\">char.jl:43</a><li> +(a::<b>Float16</b>, b::<b>Float16</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float16.jl#L136\" target=\"_blank\">float16.jl:136</a><li> +(x::<b>BigInt</b>, y::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L256\" target=\"_blank\">gmp.jl:256</a><li> +(a::<b>BigInt</b>, b::<b>BigInt</b>, c::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L279\" target=\"_blank\">gmp.jl:279</a><li> +(a::<b>BigInt</b>, b::<b>BigInt</b>, c::<b>BigInt</b>, d::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L285\" target=\"_blank\">gmp.jl:285</a><li> +(a::<b>BigInt</b>, b::<b>BigInt</b>, c::<b>BigInt</b>, d::<b>BigInt</b>, e::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L292\" target=\"_blank\">gmp.jl:292</a><li> +(x::<b>BigInt</b>, c::<b>Union{UInt16,UInt32,UInt64,UInt8}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L304\" target=\"_blank\">gmp.jl:304</a><li> +(c::<b>Union{UInt16,UInt32,UInt64,UInt8}</b>, x::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L308\" target=\"_blank\">gmp.jl:308</a><li> +(x::<b>BigInt</b>, c::<b>Union{Int16,Int32,Int64,Int8}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L320\" target=\"_blank\">gmp.jl:320</a><li> +(c::<b>Union{Int16,Int32,Int64,Int8}</b>, x::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/gmp.jl#L321\" target=\"_blank\">gmp.jl:321</a><li> +(x::<b>BigFloat</b>, y::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L208\" target=\"_blank\">mpfr.jl:208</a><li> +(x::<b>BigFloat</b>, c::<b>Union{UInt16,UInt32,UInt64,UInt8}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L215\" target=\"_blank\">mpfr.jl:215</a><li> +(c::<b>Union{UInt16,UInt32,UInt64,UInt8}</b>, x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L219\" target=\"_blank\">mpfr.jl:219</a><li> +(x::<b>BigFloat</b>, c::<b>Union{Int16,Int32,Int64,Int8}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L223\" target=\"_blank\">mpfr.jl:223</a><li> +(c::<b>Union{Int16,Int32,Int64,Int8}</b>, x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L227\" target=\"_blank\">mpfr.jl:227</a><li> +(x::<b>BigFloat</b>, c::<b>Union{Float16,Float32,Float64}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L231\" target=\"_blank\">mpfr.jl:231</a><li> +(c::<b>Union{Float16,Float32,Float64}</b>, x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L235\" target=\"_blank\">mpfr.jl:235</a><li> +(x::<b>BigFloat</b>, c::<b>BigInt</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L239\" target=\"_blank\">mpfr.jl:239</a><li> +(c::<b>BigInt</b>, x::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L243\" target=\"_blank\">mpfr.jl:243</a><li> +(a::<b>BigFloat</b>, b::<b>BigFloat</b>, c::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L379\" target=\"_blank\">mpfr.jl:379</a><li> +(a::<b>BigFloat</b>, b::<b>BigFloat</b>, c::<b>BigFloat</b>, d::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L385\" target=\"_blank\">mpfr.jl:385</a><li> +(a::<b>BigFloat</b>, b::<b>BigFloat</b>, c::<b>BigFloat</b>, d::<b>BigFloat</b>, e::<b>BigFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/mpfr.jl#L392\" target=\"_blank\">mpfr.jl:392</a><li> +(x::<b>Irrational{sym}</b>, y::<b>Irrational{sym}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/irrationals.jl#L72\" target=\"_blank\">irrationals.jl:72</a><li> +(x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L73\" target=\"_blank\">operators.jl:73</a><li> +<i>{T<:Number}</i>(x::<b>T<:Number</b>, y::<b>T<:Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L211\" target=\"_blank\">promotion.jl:211</a><li> +<i>{T<:AbstractFloat}</i>(x::<b>Bool</b>, y::<b>T<:AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bool.jl#L43\" target=\"_blank\">bool.jl:43</a><li> +(x::<b>Number</b>, y::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L167\" target=\"_blank\">promotion.jl:167</a><li> +(r1::<b>OrdinalRange{T,S}</b>, r2::<b>OrdinalRange{T,S}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L330\" target=\"_blank\">operators.jl:330</a><li> +<i>{T<:AbstractFloat}</i>(r1::<b>FloatRange{T<:AbstractFloat}</b>, r2::<b>FloatRange{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L337\" target=\"_blank\">operators.jl:337</a><li> +<i>{T<:AbstractFloat}</i>(r1::<b>LinSpace{T<:AbstractFloat}</b>, r2::<b>LinSpace{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L356\" target=\"_blank\">operators.jl:356</a><li> +(r1::<b>Union{FloatRange{T<:AbstractFloat},LinSpace{T<:AbstractFloat},OrdinalRange{T,S}}</b>, r2::<b>Union{FloatRange{T<:AbstractFloat},LinSpace{T<:AbstractFloat},OrdinalRange{T,S}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L369\" target=\"_blank\">operators.jl:369</a><li> +(x::<b>Ptr{T}</b>, y::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pointer.jl#L75\" target=\"_blank\">pointer.jl:75</a><li> +<i>{S,T}</i>(A::<b>Range{S}</b>, B::<b>Range{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L69\" target=\"_blank\">arraymath.jl:69</a><li> +<i>{S,T}</i>(A::<b>Range{S}</b>, B::<b>AbstractArray{T,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L87\" target=\"_blank\">arraymath.jl:87</a><li> +(A::<b>BitArray{N}</b>, B::<b>BitArray{N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bitarray.jl#L834\" target=\"_blank\">bitarray.jl:834</a><li> +<i>{T}</i>(B::<b>BitArray{2}</b>, J::<b>UniformScaling{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L28\" target=\"_blank\">linalg/uniformscaling.jl:28</a><li> +(A::<b>Array{T,2}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Array{T,2}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Array{T,2}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Array{T,2}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L131\" target=\"_blank\">linalg/special.jl:131</a><li> +(A::<b>Array{T,2}</b>, B::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L159\" target=\"_blank\">linalg/special.jl:159</a><li> +(A::<b>Array{T,N}</b>, B::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/sparsematrix.jl#L1019\" target=\"_blank\">sparse/sparsematrix.jl:1019</a><li> +<i>{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(x::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L202\" target=\"_blank\">dates/periods.jl:202</a><li> +(A::<b>AbstractArray{Bool,N}</b>, x::<b>Bool</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L135\" target=\"_blank\">arraymath.jl:135</a><li> +(A::<b>Union{DenseArray{Bool,N},SubArray{Bool,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, B::<b>Union{DenseArray{Bool,N},SubArray{Bool,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L166\" target=\"_blank\">arraymath.jl:166</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L84\" target=\"_blank\">linalg/tridiag.jl:84</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L404\" target=\"_blank\">linalg/tridiag.jl:404</a><li> +(A::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L347\" target=\"_blank\">linalg/triangular.jl:347</a><li> +(A::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L348\" target=\"_blank\">linalg/triangular.jl:348</a><li> +(A::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L349\" target=\"_blank\">linalg/triangular.jl:349</a><li> +(A::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L350\" target=\"_blank\">linalg/triangular.jl:350</a><li> +(A::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L351\" target=\"_blank\">linalg/triangular.jl:351</a><li> +(A::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L352\" target=\"_blank\">linalg/triangular.jl:352</a><li> +(A::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L353\" target=\"_blank\">linalg/triangular.jl:353</a><li> +(A::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L354\" target=\"_blank\">linalg/triangular.jl:354</a><li> +(A::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L355\" target=\"_blank\">linalg/triangular.jl:355</a><li> +(Da::<b>Diagonal{T}</b>, Db::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/diagonal.jl#L86\" target=\"_blank\">linalg/diagonal.jl:86</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/bidiag.jl#L176\" target=\"_blank\">linalg/bidiag.jl:176</a><li> +(UL::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L45\" target=\"_blank\">linalg/uniformscaling.jl:45</a><li> +(UL::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L48\" target=\"_blank\">linalg/uniformscaling.jl:48</a><li> +(UL::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L45\" target=\"_blank\">linalg/uniformscaling.jl:45</a><li> +(UL::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L48\" target=\"_blank\">linalg/uniformscaling.jl:48</a><li> +(A::<b>Diagonal{T}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Diagonal{T}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Diagonal{T}</b>, B::<b>Array{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L122\" target=\"_blank\">linalg/special.jl:122</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>Array{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>Array{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L121\" target=\"_blank\">linalg/special.jl:121</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L130\" target=\"_blank\">linalg/special.jl:130</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L131\" target=\"_blank\">linalg/special.jl:131</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>Array{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L130\" target=\"_blank\">linalg/special.jl:130</a><li> +(A::<b>Diagonal{T}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L139\" target=\"_blank\">linalg/special.jl:139</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L140\" target=\"_blank\">linalg/special.jl:140</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L139\" target=\"_blank\">linalg/special.jl:139</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L140\" target=\"_blank\">linalg/special.jl:140</a><li> +(A::<b>Diagonal{T}</b>, B::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L151\" target=\"_blank\">linalg/special.jl:151</a><li> +(A::<b>UpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L152\" target=\"_blank\">linalg/special.jl:152</a><li> +(A::<b>Diagonal{T}</b>, B::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L151\" target=\"_blank\">linalg/special.jl:151</a><li> +(A::<b>Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L152\" target=\"_blank\">linalg/special.jl:152</a><li> +(A::<b>Diagonal{T}</b>, B::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L151\" target=\"_blank\">linalg/special.jl:151</a><li> +(A::<b>LowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L152\" target=\"_blank\">linalg/special.jl:152</a><li> +(A::<b>Diagonal{T}</b>, B::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L151\" target=\"_blank\">linalg/special.jl:151</a><li> +(A::<b>Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Diagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L152\" target=\"_blank\">linalg/special.jl:152</a><li> +(A::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>SymTridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L158\" target=\"_blank\">linalg/special.jl:158</a><li> +(A::<b>SymTridiagonal{T}</b>, B::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L159\" target=\"_blank\">linalg/special.jl:159</a><li> +(A::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Tridiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L158\" target=\"_blank\">linalg/special.jl:158</a><li> +(A::<b>Tridiagonal{T}</b>, B::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L159\" target=\"_blank\">linalg/special.jl:159</a><li> +(A::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Bidiagonal{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L158\" target=\"_blank\">linalg/special.jl:158</a><li> +(A::<b>Bidiagonal{T}</b>, B::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L159\" target=\"_blank\">linalg/special.jl:159</a><li> +(A::<b>Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}</b>, B::<b>Array{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/special.jl#L158\" target=\"_blank\">linalg/special.jl:158</a><li> +<i>{Tv1,Ti1,Tv2,Ti2}</i>(A_1::<b>SparseMatrixCSC{Tv1,Ti1}</b>, A_2::<b>SparseMatrixCSC{Tv2,Ti2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/sparsematrix.jl#L1005\" target=\"_blank\">sparse/sparsematrix.jl:1005</a><li> +(A::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>, B::<b>Array{T,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/sparsematrix.jl#L1017\" target=\"_blank\">sparse/sparsematrix.jl:1017</a><li> +(A::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/sparsematrix.jl#L2988\" target=\"_blank\">sparse/sparsematrix.jl:2988</a><li> +<i>{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(Y::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, x::<b>Union{Base.Dates.CompoundPeriod,Base.Dates.Period}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L216\" target=\"_blank\">dates/periods.jl:216</a><li> +<i>{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(X::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L217\" target=\"_blank\">dates/periods.jl:217</a><li> +<i>{T<:Base.Dates.TimeType,P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(x::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, y::<b>T<:Base.Dates.TimeType</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L83\" target=\"_blank\">dates/arithmetic.jl:83</a><li> +<i>{T<:Base.Dates.TimeType}</i>(r::<b>Range{T<:Base.Dates.TimeType}</b>, x::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/ranges.jl#L39\" target=\"_blank\">dates/ranges.jl:39</a><li> +<i>{T<:Number}</i>(x::<b>AbstractArray{T<:Number,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/abstractarraymath.jl#L49\" target=\"_blank\">abstractarraymath.jl:49</a><li> +<i>{S,T}</i>(A::<b>AbstractArray{S,N}</b>, B::<b>Range{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L78\" target=\"_blank\">arraymath.jl:78</a><li> +<i>{S,T}</i>(A::<b>AbstractArray{S,N}</b>, B::<b>AbstractArray{T,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L96\" target=\"_blank\">arraymath.jl:96</a><li> +(A::<b>AbstractArray{T,N}</b>, x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L139\" target=\"_blank\">arraymath.jl:139</a><li> +(x::<b>Number</b>, A::<b>AbstractArray{T,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/arraymath.jl#L140\" target=\"_blank\">arraymath.jl:140</a><li> +(x::<b>Char</b>, y::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/char.jl#L42\" target=\"_blank\">char.jl:42</a><li> +<i>{N}</i>(index1::<b>CartesianIndex{N}</b>, index2::<b>CartesianIndex{N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/multidimensional.jl#L42\" target=\"_blank\">multidimensional.jl:42</a><li> +(J1::<b>UniformScaling{T<:Number}</b>, J2::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L27\" target=\"_blank\">linalg/uniformscaling.jl:27</a><li> +(J::<b>UniformScaling{T<:Number}</b>, B::<b>BitArray{2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L29\" target=\"_blank\">linalg/uniformscaling.jl:29</a><li> +(J::<b>UniformScaling{T<:Number}</b>, A::<b>AbstractArray{T,2}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L30\" target=\"_blank\">linalg/uniformscaling.jl:30</a><li> +(J::<b>UniformScaling{T<:Number}</b>, x::<b>Number</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L31\" target=\"_blank\">linalg/uniformscaling.jl:31</a><li> +(x::<b>Number</b>, J::<b>UniformScaling{T<:Number}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L32\" target=\"_blank\">linalg/uniformscaling.jl:32</a><li> +<i>{TA,TJ}</i>(A::<b>AbstractArray{TA,2}</b>, J::<b>UniformScaling{TJ}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/uniformscaling.jl#L92\" target=\"_blank\">linalg/uniformscaling.jl:92</a><li> +<i>{T}</i>(a::<b>Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}</b>, b::<b>Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pkg/resolve/versionweight.jl#L23\" target=\"_blank\">pkg/resolve/versionweight.jl:23</a><li> +(a::<b>Base.Pkg.Resolve.VersionWeights.VWPreBuildItem</b>, b::<b>Base.Pkg.Resolve.VersionWeights.VWPreBuildItem</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pkg/resolve/versionweight.jl#L85\" target=\"_blank\">pkg/resolve/versionweight.jl:85</a><li> +(a::<b>Base.Pkg.Resolve.VersionWeights.VWPreBuild</b>, b::<b>Base.Pkg.Resolve.VersionWeights.VWPreBuild</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pkg/resolve/versionweight.jl#L131\" target=\"_blank\">pkg/resolve/versionweight.jl:131</a><li> +(a::<b>Base.Pkg.Resolve.VersionWeights.VersionWeight</b>, b::<b>Base.Pkg.Resolve.VersionWeights.VersionWeight</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pkg/resolve/versionweight.jl#L185\" target=\"_blank\">pkg/resolve/versionweight.jl:185</a><li> +(a::<b>Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue</b>, b::<b>Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/pkg/resolve/fieldvalue.jl#L44\" target=\"_blank\">pkg/resolve/fieldvalue.jl:44</a><li> +<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>P<:Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L43\" target=\"_blank\">dates/periods.jl:43</a><li> +(x::<b>Base.Dates.Period</b>, y::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L190\" target=\"_blank\">dates/periods.jl:190</a><li> +(x::<b>Base.Dates.CompoundPeriod</b>, y::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L191\" target=\"_blank\">dates/periods.jl:191</a><li> +(y::<b>Base.Dates.Period</b>, x::<b>Base.Dates.CompoundPeriod</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L192\" target=\"_blank\">dates/periods.jl:192</a><li> +(x::<b>Base.Dates.CompoundPeriod</b>, y::<b>Base.Dates.CompoundPeriod</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L193\" target=\"_blank\">dates/periods.jl:193</a><li> +(x::<b>Base.Dates.CompoundPeriod</b>, y::<b>Base.Dates.TimeType</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L238\" target=\"_blank\">dates/periods.jl:238</a><li> +(y::<b>Base.Dates.Period</b>, x::<b>Base.Dates.TimeType</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L66\" target=\"_blank\">dates/arithmetic.jl:66</a><li> +<i>{T<:Base.Dates.TimeType}</i>(x::<b>Base.Dates.Period</b>, r::<b>Range{T<:Base.Dates.TimeType}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/ranges.jl#L40\" target=\"_blank\">dates/ranges.jl:40</a><li> +(x::<b>Union{Base.Dates.CompoundPeriod,Base.Dates.Period}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L201\" target=\"_blank\">dates/periods.jl:201</a><li> +<i>{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(x::<b>Union{Base.Dates.CompoundPeriod,Base.Dates.Period}</b>, Y::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L215\" target=\"_blank\">dates/periods.jl:215</a><li> +(dt::<b>DateTime</b>, y::<b>Base.Dates.Year</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L13\" target=\"_blank\">dates/arithmetic.jl:13</a><li> +(dt::<b>Date</b>, y::<b>Base.Dates.Year</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L17\" target=\"_blank\">dates/arithmetic.jl:17</a><li> +(dt::<b>DateTime</b>, z::<b>Base.Dates.Month</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L37\" target=\"_blank\">dates/arithmetic.jl:37</a><li> +(dt::<b>Date</b>, z::<b>Base.Dates.Month</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L43\" target=\"_blank\">dates/arithmetic.jl:43</a><li> +(x::<b>Date</b>, y::<b>Base.Dates.Week</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L60\" target=\"_blank\">dates/arithmetic.jl:60</a><li> +(x::<b>Date</b>, y::<b>Base.Dates.Day</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L62\" target=\"_blank\">dates/arithmetic.jl:62</a><li> +(x::<b>DateTime</b>, y::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L64\" target=\"_blank\">dates/arithmetic.jl:64</a><li> +(x::<b>Base.Dates.TimeType</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L8\" target=\"_blank\">dates/arithmetic.jl:8</a><li> +(a::<b>Base.Dates.TimeType</b>, b::<b>Base.Dates.Period</b>, c::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L227\" target=\"_blank\">dates/periods.jl:227</a><li> +(a::<b>Base.Dates.TimeType</b>, b::<b>Base.Dates.Period</b>, c::<b>Base.Dates.Period</b>, d::<b>Base.Dates.Period...</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L229\" target=\"_blank\">dates/periods.jl:229</a><li> +(x::<b>Base.Dates.TimeType</b>, y::<b>Base.Dates.CompoundPeriod</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L233\" target=\"_blank\">dates/periods.jl:233</a><li> +(x::<b>Base.Dates.Instant</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L4\" target=\"_blank\">dates/arithmetic.jl:4</a><li> +<i>{T<:Base.Dates.TimeType}</i>(x::<b>AbstractArray{T<:Base.Dates.TimeType,N}</b>, y::<b>Union{Base.Dates.CompoundPeriod,Base.Dates.Period}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L76\" target=\"_blank\">dates/arithmetic.jl:76</a><li> +<i>{T<:Base.Dates.TimeType}</i>(y::<b>Union{Base.Dates.CompoundPeriod,Base.Dates.Period}</b>, x::<b>AbstractArray{T<:Base.Dates.TimeType,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L77\" target=\"_blank\">dates/arithmetic.jl:77</a><li> +<i>{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}</i>(y::<b>Base.Dates.TimeType</b>, x::<b>Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/arithmetic.jl#L84\" target=\"_blank\">dates/arithmetic.jl:84</a><li> +(a, b, c, xs...) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L103\" target=\"_blank\">operators.jl:103</a></ul>"
      ],
      "text/plain": [
       "# 171 methods for generic function \"+\":\n",
       "+(x::Bool) at bool.jl:33\n",
       "+(x::Bool, y::Bool) at bool.jl:36\n",
       "+(y::AbstractFloat, x::Bool) at bool.jl:46\n",
       "+(x::Int64, y::Int64) at int.jl:8\n",
       "+(x::Int8, y::Int8) at int.jl:16\n",
       "+(x::UInt8, y::UInt8) at int.jl:16\n",
       "+(x::Int16, y::Int16) at int.jl:16\n",
       "+(x::UInt16, y::UInt16) at int.jl:16\n",
       "+(x::Int32, y::Int32) at int.jl:16\n",
       "+(x::UInt32, y::UInt32) at int.jl:16\n",
       "+(x::UInt64, y::UInt64) at int.jl:16\n",
       "+(x::Int128, y::Int128) at int.jl:16\n",
       "+(x::UInt128, y::UInt128) at int.jl:16\n",
       "+(x::Integer, y::Ptr{T}) at pointer.jl:77\n",
       "+(x::Float32, y::Float32) at float.jl:207\n",
       "+(x::Float64, y::Float64) at float.jl:208\n",
       "+(z::Complex{T<:Real}, w::Complex{T<:Real}) at complex.jl:111\n",
       "+(x::Bool, z::Complex{Bool}) at complex.jl:118\n",
       "+(z::Complex{Bool}, x::Bool) at complex.jl:119\n",
       "+(x::Bool, z::Complex{T<:Real}) at complex.jl:125\n",
       "+(z::Complex{T<:Real}, x::Bool) at complex.jl:126\n",
       "+(x::Real, z::Complex{Bool}) at complex.jl:132\n",
       "+(z::Complex{Bool}, x::Real) at complex.jl:133\n",
       "+(x::Real, z::Complex{T<:Real}) at complex.jl:144\n",
       "+(z::Complex{T<:Real}, x::Real) at complex.jl:145\n",
       "+(x::Rational{T<:Integer}, y::Rational{T<:Integer}) at rational.jl:179\n",
       "+(x::Bool, A::AbstractArray{Bool,N}) at arraymath.jl:136\n",
       "+(x::Integer, y::Char) at char.jl:43\n",
       "+(a::Float16, b::Float16) at float16.jl:136\n",
       "+(x::BigInt, y::BigInt) at gmp.jl:256\n",
       "+(a::BigInt, b::BigInt, c::BigInt) at gmp.jl:279\n",
       "+(a::BigInt, b::BigInt, c::BigInt, d::BigInt) at gmp.jl:285\n",
       "+(a::BigInt, b::BigInt, c::BigInt, d::BigInt, e::BigInt) at gmp.jl:292\n",
       "+(x::BigInt, c::Union{UInt16,UInt32,UInt64,UInt8}) at gmp.jl:304\n",
       "+(c::Union{UInt16,UInt32,UInt64,UInt8}, x::BigInt) at gmp.jl:308\n",
       "+(x::BigInt, c::Union{Int16,Int32,Int64,Int8}) at gmp.jl:320\n",
       "+(c::Union{Int16,Int32,Int64,Int8}, x::BigInt) at gmp.jl:321\n",
       "+(x::BigFloat, y::BigFloat) at mpfr.jl:208\n",
       "+(x::BigFloat, c::Union{UInt16,UInt32,UInt64,UInt8}) at mpfr.jl:215\n",
       "+(c::Union{UInt16,UInt32,UInt64,UInt8}, x::BigFloat) at mpfr.jl:219\n",
       "+(x::BigFloat, c::Union{Int16,Int32,Int64,Int8}) at mpfr.jl:223\n",
       "+(c::Union{Int16,Int32,Int64,Int8}, x::BigFloat) at mpfr.jl:227\n",
       "+(x::BigFloat, c::Union{Float16,Float32,Float64}) at mpfr.jl:231\n",
       "+(c::Union{Float16,Float32,Float64}, x::BigFloat) at mpfr.jl:235\n",
       "+(x::BigFloat, c::BigInt) at mpfr.jl:239\n",
       "+(c::BigInt, x::BigFloat) at mpfr.jl:243\n",
       "+(a::BigFloat, b::BigFloat, c::BigFloat) at mpfr.jl:379\n",
       "+(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat) at mpfr.jl:385\n",
       "+(a::BigFloat, b::BigFloat, c::BigFloat, d::BigFloat, e::BigFloat) at mpfr.jl:392\n",
       "+(x::Irrational{sym}, y::Irrational{sym}) at irrationals.jl:72\n",
       "+(x::Number) at operators.jl:73\n",
       "+{T<:Number}(x::T<:Number, y::T<:Number) at promotion.jl:211\n",
       "+{T<:AbstractFloat}(x::Bool, y::T<:AbstractFloat) at bool.jl:43\n",
       "+(x::Number, y::Number) at promotion.jl:167\n",
       "+(r1::OrdinalRange{T,S}, r2::OrdinalRange{T,S}) at operators.jl:330\n",
       "+{T<:AbstractFloat}(r1::FloatRange{T<:AbstractFloat}, r2::FloatRange{T<:AbstractFloat}) at operators.jl:337\n",
       "+{T<:AbstractFloat}(r1::LinSpace{T<:AbstractFloat}, r2::LinSpace{T<:AbstractFloat}) at operators.jl:356\n",
       "+(r1::Union{FloatRange{T<:AbstractFloat},LinSpace{T<:AbstractFloat},OrdinalRange{T,S}}, r2::Union{FloatRange{T<:AbstractFloat},LinSpace{T<:AbstractFloat},OrdinalRange{T,S}}) at operators.jl:369\n",
       "+(x::Ptr{T}, y::Integer) at pointer.jl:75\n",
       "+{S,T}(A::Range{S}, B::Range{T}) at arraymath.jl:69\n",
       "+{S,T}(A::Range{S}, B::AbstractArray{T,N}) at arraymath.jl:87\n",
       "+(A::BitArray{N}, B::BitArray{N}) at bitarray.jl:834\n",
       "+{T}(B::BitArray{2}, J::UniformScaling{T}) at linalg/uniformscaling.jl:28\n",
       "+(A::Array{T,2}, B::Diagonal{T}) at linalg/special.jl:122\n",
       "+(A::Array{T,2}, B::Bidiagonal{T}) at linalg/special.jl:122\n",
       "+(A::Array{T,2}, B::Tridiagonal{T}) at linalg/special.jl:122\n",
       "+(A::Array{T,2}, B::SymTridiagonal{T}) at linalg/special.jl:131\n",
       "+(A::Array{T,2}, B::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:159\n",
       "+(A::Array{T,N}, B::SparseMatrixCSC{Tv,Ti<:Integer}) at sparse/sparsematrix.jl:1019\n",
       "+{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(x::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at dates/periods.jl:202\n",
       "+(A::AbstractArray{Bool,N}, x::Bool) at arraymath.jl:135\n",
       "+(A::Union{DenseArray{Bool,N},SubArray{Bool,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, B::Union{DenseArray{Bool,N},SubArray{Bool,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at arraymath.jl:166\n",
       "+(A::SymTridiagonal{T}, B::SymTridiagonal{T}) at linalg/tridiag.jl:84\n",
       "+(A::Tridiagonal{T}, B::Tridiagonal{T}) at linalg/tridiag.jl:404\n",
       "+(A::UpperTriangular{T,S<:AbstractArray{T,2}}, B::UpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:347\n",
       "+(A::LowerTriangular{T,S<:AbstractArray{T,2}}, B::LowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:348\n",
       "+(A::UpperTriangular{T,S<:AbstractArray{T,2}}, B::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:349\n",
       "+(A::LowerTriangular{T,S<:AbstractArray{T,2}}, B::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:350\n",
       "+(A::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}, B::UpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:351\n",
       "+(A::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}, B::LowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:352\n",
       "+(A::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}, B::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:353\n",
       "+(A::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}, B::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:354\n",
       "+(A::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}, B::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}) at linalg/triangular.jl:355\n",
       "+(Da::Diagonal{T}, Db::Diagonal{T}) at linalg/diagonal.jl:86\n",
       "+(A::Bidiagonal{T}, B::Bidiagonal{T}) at linalg/bidiag.jl:176\n",
       "+(UL::UpperTriangular{T,S<:AbstractArray{T,2}}, J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:45\n",
       "+(UL::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}, J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:48\n",
       "+(UL::LowerTriangular{T,S<:AbstractArray{T,2}}, J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:45\n",
       "+(UL::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}, J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:48\n",
       "+(A::Diagonal{T}, B::Bidiagonal{T}) at linalg/special.jl:121\n",
       "+(A::Bidiagonal{T}, B::Diagonal{T}) at linalg/special.jl:122\n",
       "+(A::Diagonal{T}, B::Tridiagonal{T}) at linalg/special.jl:121\n",
       "+(A::Tridiagonal{T}, B::Diagonal{T}) at linalg/special.jl:122\n",
       "+(A::Diagonal{T}, B::Array{T,2}) at linalg/special.jl:121\n",
       "+(A::Bidiagonal{T}, B::Tridiagonal{T}) at linalg/special.jl:121\n",
       "+(A::Tridiagonal{T}, B::Bidiagonal{T}) at linalg/special.jl:122\n",
       "+(A::Bidiagonal{T}, B::Array{T,2}) at linalg/special.jl:121\n",
       "+(A::Tridiagonal{T}, B::Array{T,2}) at linalg/special.jl:121\n",
       "+(A::SymTridiagonal{T}, B::Tridiagonal{T}) at linalg/special.jl:130\n",
       "+(A::Tridiagonal{T}, B::SymTridiagonal{T}) at linalg/special.jl:131\n",
       "+(A::SymTridiagonal{T}, B::Array{T,2}) at linalg/special.jl:130\n",
       "+(A::Diagonal{T}, B::SymTridiagonal{T}) at linalg/special.jl:139\n",
       "+(A::SymTridiagonal{T}, B::Diagonal{T}) at linalg/special.jl:140\n",
       "+(A::Bidiagonal{T}, B::SymTridiagonal{T}) at linalg/special.jl:139\n",
       "+(A::SymTridiagonal{T}, B::Bidiagonal{T}) at linalg/special.jl:140\n",
       "+(A::Diagonal{T}, B::UpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:151\n",
       "+(A::UpperTriangular{T,S<:AbstractArray{T,2}}, B::Diagonal{T}) at linalg/special.jl:152\n",
       "+(A::Diagonal{T}, B::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:151\n",
       "+(A::Base.LinAlg.UnitUpperTriangular{T,S<:AbstractArray{T,2}}, B::Diagonal{T}) at linalg/special.jl:152\n",
       "+(A::Diagonal{T}, B::LowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:151\n",
       "+(A::LowerTriangular{T,S<:AbstractArray{T,2}}, B::Diagonal{T}) at linalg/special.jl:152\n",
       "+(A::Diagonal{T}, B::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:151\n",
       "+(A::Base.LinAlg.UnitLowerTriangular{T,S<:AbstractArray{T,2}}, B::Diagonal{T}) at linalg/special.jl:152\n",
       "+(A::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}, B::SymTridiagonal{T}) at linalg/special.jl:158\n",
       "+(A::SymTridiagonal{T}, B::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:159\n",
       "+(A::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}, B::Tridiagonal{T}) at linalg/special.jl:158\n",
       "+(A::Tridiagonal{T}, B::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:159\n",
       "+(A::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}, B::Bidiagonal{T}) at linalg/special.jl:158\n",
       "+(A::Bidiagonal{T}, B::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}) at linalg/special.jl:159\n",
       "+(A::Base.LinAlg.AbstractTriangular{T,S<:AbstractArray{T,2}}, B::Array{T,2}) at linalg/special.jl:158\n",
       "+{Tv1,Ti1,Tv2,Ti2}(A_1::SparseMatrixCSC{Tv1,Ti1}, A_2::SparseMatrixCSC{Tv2,Ti2}) at sparse/sparsematrix.jl:1005\n",
       "+(A::SparseMatrixCSC{Tv,Ti<:Integer}, B::Array{T,N}) at sparse/sparsematrix.jl:1017\n",
       "+(A::SparseMatrixCSC{Tv,Ti<:Integer}, J::UniformScaling{T<:Number}) at sparse/sparsematrix.jl:2988\n",
       "+{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(Y::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, x::Union{Base.Dates.CompoundPeriod,Base.Dates.Period}) at dates/periods.jl:216\n",
       "+{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(X::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{Q<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at dates/periods.jl:217\n",
       "+{T<:Base.Dates.TimeType,P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(x::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, y::T<:Base.Dates.TimeType) at dates/arithmetic.jl:83\n",
       "+{T<:Base.Dates.TimeType}(r::Range{T<:Base.Dates.TimeType}, x::Base.Dates.Period) at dates/ranges.jl:39\n",
       "+{T<:Number}(x::AbstractArray{T<:Number,N}) at abstractarraymath.jl:49\n",
       "+{S,T}(A::AbstractArray{S,N}, B::Range{T}) at arraymath.jl:78\n",
       "+{S,T}(A::AbstractArray{S,N}, B::AbstractArray{T,N}) at arraymath.jl:96\n",
       "+(A::AbstractArray{T,N}, x::Number) at arraymath.jl:139\n",
       "+(x::Number, A::AbstractArray{T,N}) at arraymath.jl:140\n",
       "+(x::Char, y::Integer) at char.jl:42\n",
       "+{N}(index1::CartesianIndex{N}, index2::CartesianIndex{N}) at multidimensional.jl:42\n",
       "+(J1::UniformScaling{T<:Number}, J2::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:27\n",
       "+(J::UniformScaling{T<:Number}, B::BitArray{2}) at linalg/uniformscaling.jl:29\n",
       "+(J::UniformScaling{T<:Number}, A::AbstractArray{T,2}) at linalg/uniformscaling.jl:30\n",
       "+(J::UniformScaling{T<:Number}, x::Number) at linalg/uniformscaling.jl:31\n",
       "+(x::Number, J::UniformScaling{T<:Number}) at linalg/uniformscaling.jl:32\n",
       "+{TA,TJ}(A::AbstractArray{TA,2}, J::UniformScaling{TJ}) at linalg/uniformscaling.jl:92\n",
       "+{T}(a::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}, b::Base.Pkg.Resolve.VersionWeights.HierarchicalValue{T}) at pkg/resolve/versionweight.jl:23\n",
       "+(a::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem, b::Base.Pkg.Resolve.VersionWeights.VWPreBuildItem) at pkg/resolve/versionweight.jl:85\n",
       "+(a::Base.Pkg.Resolve.VersionWeights.VWPreBuild, b::Base.Pkg.Resolve.VersionWeights.VWPreBuild) at pkg/resolve/versionweight.jl:131\n",
       "+(a::Base.Pkg.Resolve.VersionWeights.VersionWeight, b::Base.Pkg.Resolve.VersionWeights.VersionWeight) at pkg/resolve/versionweight.jl:185\n",
       "+(a::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue, b::Base.Pkg.Resolve.MaxSum.FieldValues.FieldValue) at pkg/resolve/fieldvalue.jl:44\n",
       "+{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::P<:Base.Dates.Period) at dates/periods.jl:43\n",
       "+(x::Base.Dates.Period, y::Base.Dates.Period) at dates/periods.jl:190\n",
       "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.Period) at dates/periods.jl:191\n",
       "+(y::Base.Dates.Period, x::Base.Dates.CompoundPeriod) at dates/periods.jl:192\n",
       "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.CompoundPeriod) at dates/periods.jl:193\n",
       "+(x::Base.Dates.CompoundPeriod, y::Base.Dates.TimeType) at dates/periods.jl:238\n",
       "+(y::Base.Dates.Period, x::Base.Dates.TimeType) at dates/arithmetic.jl:66\n",
       "+{T<:Base.Dates.TimeType}(x::Base.Dates.Period, r::Range{T<:Base.Dates.TimeType}) at dates/ranges.jl:40\n",
       "+(x::Union{Base.Dates.CompoundPeriod,Base.Dates.Period}) at dates/periods.jl:201\n",
       "+{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(x::Union{Base.Dates.CompoundPeriod,Base.Dates.Period}, Y::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at dates/periods.jl:215\n",
       "+(dt::DateTime, y::Base.Dates.Year) at dates/arithmetic.jl:13\n",
       "+(dt::Date, y::Base.Dates.Year) at dates/arithmetic.jl:17\n",
       "+(dt::DateTime, z::Base.Dates.Month) at dates/arithmetic.jl:37\n",
       "+(dt::Date, z::Base.Dates.Month) at dates/arithmetic.jl:43\n",
       "+(x::Date, y::Base.Dates.Week) at dates/arithmetic.jl:60\n",
       "+(x::Date, y::Base.Dates.Day) at dates/arithmetic.jl:62\n",
       "+(x::DateTime, y::Base.Dates.Period) at dates/arithmetic.jl:64\n",
       "+(x::Base.Dates.TimeType) at dates/arithmetic.jl:8\n",
       "+(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period) at dates/periods.jl:227\n",
       "+(a::Base.Dates.TimeType, b::Base.Dates.Period, c::Base.Dates.Period, d::Base.Dates.Period...) at dates/periods.jl:229\n",
       "+(x::Base.Dates.TimeType, y::Base.Dates.CompoundPeriod) at dates/periods.jl:233\n",
       "+(x::Base.Dates.Instant) at dates/arithmetic.jl:4\n",
       "+{T<:Base.Dates.TimeType}(x::AbstractArray{T<:Base.Dates.TimeType,N}, y::Union{Base.Dates.CompoundPeriod,Base.Dates.Period}) at dates/arithmetic.jl:76\n",
       "+{T<:Base.Dates.TimeType}(y::Union{Base.Dates.CompoundPeriod,Base.Dates.Period}, x::AbstractArray{T<:Base.Dates.TimeType,N}) at dates/arithmetic.jl:77\n",
       "+{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period}}(y::Base.Dates.TimeType, x::Union{DenseArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N},SubArray{P<:Union{Base.Dates.CompoundPeriod,Base.Dates.Period},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at dates/arithmetic.jl:84\n",
       "+(a, b, c, xs...) at operators.jl:103"
      ]
     },
     "execution_count": 158,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "methods(+)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "326-element Array{Method,1}:<ul><li> rem<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L232\" target=\"_blank\">promotion.jl:232</a><li> rem(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L187\" target=\"_blank\">promotion.jl:187</a><li> rem<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L49\" target=\"_blank\">dates/periods.jl:49</a><li> *(x::<b>Real</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L140\" target=\"_blank\">complex.jl:140</a><li> *(z::<b>Complex{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L141\" target=\"_blank\">complex.jl:141</a><li> *(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L152\" target=\"_blank\">complex.jl:152</a><li> *(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L153\" target=\"_blank\">complex.jl:153</a><li> *(y::<b>Real</b>, x::<b>Base.Dates.Period</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L55\" target=\"_blank\">dates/periods.jl:55</a><li> *<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L54\" target=\"_blank\">dates/periods.jl:54</a><li> +(x::<b>Real</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L132\" target=\"_blank\">complex.jl:132</a><li> +(z::<b>Complex{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L133\" target=\"_blank\">complex.jl:133</a><li> +(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L144\" target=\"_blank\">complex.jl:144</a><li> +(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L145\" target=\"_blank\">complex.jl:145</a><li> -(z::<b>Complex{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L139\" target=\"_blank\">complex.jl:139</a><li> -(x::<b>Real</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L136\" target=\"_blank\">complex.jl:136</a><li> -(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L148\" target=\"_blank\">complex.jl:148</a><li> -(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L151\" target=\"_blank\">complex.jl:151</a><li> .%(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L149\" target=\"_blank\">operators.jl:149</a><li> .*(x::<b>Real</b>, r::<b>OrdinalRange{T,S}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L574\" target=\"_blank\">range.jl:574</a><li> .*(x::<b>Real</b>, r::<b>FloatRange{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L575\" target=\"_blank\">range.jl:575</a><li> .*(x::<b>Real</b>, r::<b>LinSpace{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L576\" target=\"_blank\">range.jl:576</a><li> .*(r::<b>FloatRange{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L578\" target=\"_blank\">range.jl:578</a><li> .*(r::<b>LinSpace{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L579\" target=\"_blank\">range.jl:579</a><li> .*(r::<b>Range{T}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L577\" target=\"_blank\">range.jl:577</a><li> .*<i>{P<:Base.Dates.Period}</i>(y::<b>Real</b>, X::<b>Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L56\" target=\"_blank\">dates/periods.jl:56</a><li> .*<i>{P<:Base.Dates.Period}</i>(X::<b>Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L66\" target=\"_blank\">dates/periods.jl:66</a><li> .+(x::<b>Real</b>, r::<b>UnitRange{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L549\" target=\"_blank\">range.jl:549</a><li> .+(x::<b>Real</b>, r::<b>FloatRange{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L552\" target=\"_blank\">range.jl:552</a><li> .+<i>{T}</i>(x::<b>Real</b>, r::<b>LinSpace{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L554\" target=\"_blank\">range.jl:554</a><li> .+(x::<b>Real</b>, r::<b>Range{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L550\" target=\"_blank\">range.jl:550</a><li> .+(r::<b>Range{T}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L557\" target=\"_blank\">range.jl:557</a><li> .-(x::<b>Real</b>, r::<b>FloatRange{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L561\" target=\"_blank\">range.jl:561</a><li> .-(x::<b>Real</b>, r::<b>LinSpace{T<:AbstractFloat}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L563\" target=\"_blank\">range.jl:563</a><li> .-(x::<b>Real</b>, r::<b>Range{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L560\" target=\"_blank\">range.jl:560</a><li> .-(r::<b>UnitRange{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L566\" target=\"_blank\">range.jl:566</a><li> .-(r::<b>StepRange{T,S}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L567\" target=\"_blank\">range.jl:567</a><li> .-(r::<b>FloatRange{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L568\" target=\"_blank\">range.jl:568</a><li> .-(r::<b>LinSpace{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L570\" target=\"_blank\">range.jl:570</a><li> ./(r::<b>OrdinalRange{T,S}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L581\" target=\"_blank\">range.jl:581</a><li> ./(r::<b>FloatRange{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L582\" target=\"_blank\">range.jl:582</a><li> ./(r::<b>LinSpace{T<:AbstractFloat}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L583\" target=\"_blank\">range.jl:583</a><li> ./<i>{P<:Base.Dates.Period}</i>(X::<b>Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L66\" target=\"_blank\">dates/periods.jl:66</a><li> .<(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L124\" target=\"_blank\">operators.jl:124</a><li> .<=(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L125\" target=\"_blank\">operators.jl:125</a><li> /(a::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L155\" target=\"_blank\">complex.jl:155</a><li> /(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L156\" target=\"_blank\">complex.jl:156</a><li> /<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L49\" target=\"_blank\">dates/periods.jl:49</a><li> //(x::<b>Complex{T<:Real}</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/rational.jl#L38\" target=\"_blank\">rational.jl:38</a><li> <<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L226\" target=\"_blank\">promotion.jl:226</a><li> <(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L181\" target=\"_blank\">promotion.jl:181</a><li> <=<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L227\" target=\"_blank\">promotion.jl:227</a><li> <=(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L182\" target=\"_blank\">promotion.jl:182</a><li> ==(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L84\" target=\"_blank\">complex.jl:84</a><li> ==(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L85\" target=\"_blank\">complex.jl:85</a><li> ==(x::<b>Irrational{sym}</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/irrationals.jl#L27\" target=\"_blank\">irrationals.jl:27</a><li> ==(x::<b>Real</b>, y::<b>Irrational{sym}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/irrationals.jl#L28\" target=\"_blank\">irrationals.jl:28</a><li> A_ldiv_B!<i>{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64}}</i>(A::<b>Base.LinAlg.QRPivoted{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S<:AbstractArray{T,2}}</b>, B::<b>Union{DenseArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2},SubArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, rcond::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/qr.jl#L304\" target=\"_blank\">linalg/qr.jl:304</a><li> abs(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L28\" target=\"_blank\">number.jl:28</a><li> abs2(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L29\" target=\"_blank\">number.jl:29</a><li> acos(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> acosh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> airy(k::<b>Number</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L89\" target=\"_blank\">special/bessel.jl:89</a><li> airyx(k::<b>Number</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L109\" target=\"_blank\">special/bessel.jl:109</a><li> angle(z::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L36\" target=\"_blank\">number.jl:36</a><li> asin(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> asinh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> atan(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> atan2(y::<b>Real</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L169\" target=\"_blank\">math.jl:169</a><li> atanh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> besselh(nu::<b>Real</b>, k::<b>Integer</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L267\" target=\"_blank\">special/bessel.jl:267</a><li> besselh(nu::<b>Real</b>, k::<b>Integer</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L268\" target=\"_blank\">special/bessel.jl:268</a><li> besselh(nu::<b>Real</b>, k::<b>Integer</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L269\" target=\"_blank\">special/bessel.jl:269</a><li> besselhx(nu::<b>Real</b>, k::<b>Integer</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L278\" target=\"_blank\">special/bessel.jl:278</a><li> besselhx(nu::<b>Real</b>, k::<b>Integer</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L279\" target=\"_blank\">special/bessel.jl:279</a><li> besselhx(nu::<b>Real</b>, k::<b>Integer</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L280\" target=\"_blank\">special/bessel.jl:280</a><li> besseli(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L289\" target=\"_blank\">special/bessel.jl:289</a><li> besseli(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besseli(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besseli(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> besselix(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L296\" target=\"_blank\">special/bessel.jl:296</a><li> besselix(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besselix(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besselix(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> besselj(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besselj(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besselj(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> besselj0(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L19\" target=\"_blank\">special/bessel.jl:19</a><li> besselj1(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L19\" target=\"_blank\">special/bessel.jl:19</a><li> besseljx(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L314\" target=\"_blank\">special/bessel.jl:314</a><li> besseljx(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besseljx(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besseljx(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> besselk(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L321\" target=\"_blank\">special/bessel.jl:321</a><li> besselk(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besselk(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besselk(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> besselkx(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L331\" target=\"_blank\">special/bessel.jl:331</a><li> besselkx(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besselkx(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besselkx(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> bessely(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L341\" target=\"_blank\">special/bessel.jl:341</a><li> bessely(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> bessely(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> bessely(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> bessely0(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L19\" target=\"_blank\">special/bessel.jl:19</a><li> bessely1(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L19\" target=\"_blank\">special/bessel.jl:19</a><li> besselyx(nu::<b>Real</b>, x::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L363\" target=\"_blank\">special/bessel.jl:363</a><li> besselyx(nu::<b>Real</b>, z::<b>Complex{Float32}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L372\" target=\"_blank\">special/bessel.jl:372</a><li> besselyx(nu::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L373\" target=\"_blank\">special/bessel.jl:373</a><li> besselyx(nu::<b>Real</b>, x::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/bessel.jl#L374\" target=\"_blank\">special/bessel.jl:374</a><li> call<i>{T<:Real}</i>(::<b>Type{UnitRange{T<:Real}}</b>, start::<b>T<:Real</b>, stop::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L71\" target=\"_blank\">range.jl:71</a><li> call(::<b>Type{FloatRange{T<:AbstractFloat}}</b>, a::<b>AbstractFloat</b>, s::<b>AbstractFloat</b>, l::<b>Real</b>, d::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L111\" target=\"_blank\">range.jl:111</a><li> call<i>{T<:AbstractFloat}</i>(::<b>Type{T<:AbstractFloat}</b>, x::<b>Real</b>, r::<b>RoundingMode{T}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/rounding.jl#L69\" target=\"_blank\">rounding.jl:69</a><li> call(::<b>Type{Complex{T<:Real}}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L8\" target=\"_blank\">complex.jl:8</a><li> call<i>{T<:Real}</i>(::<b>Type{Complex{T<:Real}}</b>, re::<b>T<:Real</b>, im::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L4\" target=\"_blank\">complex.jl:4</a><li> call(::<b>Type{Complex{T<:Real}}</b>, x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L7\" target=\"_blank\">complex.jl:7</a><li> call(::<b>Type{Base.Libc.TmStruct}</b>, t::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/libc.jl#L101\" target=\"_blank\">libc.jl:101</a><li> call(::<b>Type{Timer}</b>, timeout::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/stream.jl#L640\" target=\"_blank\">stream.jl:640</a><li> call(::<b>Type{Timer}</b>, timeout::<b>Real</b>, repeat::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/stream.jl#L640\" target=\"_blank\">stream.jl:640</a><li> call(::<b>Type{Timer}</b>, cb::<b>Function</b>, timeout::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/stream.jl#L702\" target=\"_blank\">stream.jl:702</a><li> call(::<b>Type{Timer}</b>, cb::<b>Function</b>, timeout::<b>Real</b>, repeat::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/stream.jl#L702\" target=\"_blank\">stream.jl:702</a><li> call<i>{T}</i>(::<b>Type{Base.LinAlg.CholeskyPivoted{T,S<:AbstractArray{T,2}}}</b>, A::<b>AbstractArray{T,2}</b>, uplo::<b>Char</b>, piv::<b>Array{Int64,1}</b>, rank::<b>Int64</b>, tol::<b>Real</b>, info::<b>Int64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/cholesky.jl#L23\" target=\"_blank\">linalg/cholesky.jl:23</a><li> call<i>{K,inplace,N}</i>(::<b>Type{Base.DFT.FFTW.cFFTWPlan{Complex{Float64},K,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L461\" target=\"_blank\">fft/FFTW.jl:461</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.rFFTWPlan{Float64,-1,inplace,N}}</b>, X::<b>Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L482\" target=\"_blank\">fft/FFTW.jl:482</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.rFFTWPlan{Complex{Float64},1,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L503\" target=\"_blank\">fft/FFTW.jl:503</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.r2rFFTWPlan{Float64,ANY,inplace,N}}</b>, X::<b>Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, kinds, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L525\" target=\"_blank\">fft/FFTW.jl:525</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.r2rFFTWPlan{Complex{Float64},ANY,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, kinds, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L548\" target=\"_blank\">fft/FFTW.jl:548</a><li> call<i>{K,inplace,N}</i>(::<b>Type{Base.DFT.FFTW.cFFTWPlan{Complex{Float32},K,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L461\" target=\"_blank\">fft/FFTW.jl:461</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.rFFTWPlan{Float32,-1,inplace,N}}</b>, X::<b>Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L482\" target=\"_blank\">fft/FFTW.jl:482</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.rFFTWPlan{Complex{Float32},1,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L503\" target=\"_blank\">fft/FFTW.jl:503</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.r2rFFTWPlan{Float32,ANY,inplace,N}}</b>, X::<b>Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, kinds, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L525\" target=\"_blank\">fft/FFTW.jl:525</a><li> call<i>{inplace,N}</i>(::<b>Type{Base.DFT.FFTW.r2rFFTWPlan{Complex{Float32},ANY,inplace,N}}</b>, X::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, Y::<b>Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, region, kinds, flags::<b>Integer</b>, timelimit::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/fft/FFTW.jl#L548\" target=\"_blank\">fft/FFTW.jl:548</a><li> call(::<b>Type{Base.QuadGK.Segment}</b>, a::<b>Number</b>, b::<b>Number</b>, I, E::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/quadgk.jl#L40\" target=\"_blank\">quadgk.jl:40</a><li> cbrt(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> ceil(x::<b>Real</b>, digits::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> ceil(x::<b>Real</b>, digits::<b>Integer</b>, base::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> checkbounds(::<b>Type{Bool}</b>, sz::<b>Integer</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/abstractarray.jl#L140\" target=\"_blank\">abstractarray.jl:140</a><li> checkbounds(s::<b>AbstractString</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> circshift(a::<b>AbstractArray{T,N}</b>, shiftamt::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/abstractarraymath.jl#L97\" target=\"_blank\">abstractarraymath.jl:97</a><li> cis(theta::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L309\" target=\"_blank\">complex.jl:309</a><li> cld<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L142\" target=\"_blank\">operators.jl:142</a><li> cld(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L186\" target=\"_blank\">promotion.jl:186</a><li> cmp(x::<b>Real</b>, y::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L259\" target=\"_blank\">float.jl:259</a><li> cmp(x::<b>AbstractFloat</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L264\" target=\"_blank\">float.jl:264</a><li> colon<i>{T<:Real}</i>(a::<b>T<:Real</b>, b::<b>AbstractFloat</b>, c::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L164\" target=\"_blank\">range.jl:164</a><li> colon<i>{T<:AbstractFloat}</i>(a::<b>T<:AbstractFloat</b>, b::<b>Real</b>, c::<b>T<:AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L166\" target=\"_blank\">range.jl:166</a><li> colon<i>{T<:Real}</i>(start::<b>T<:Real</b>, stop::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L82\" target=\"_blank\">range.jl:82</a><li> colon<i>{T<:Real}</i>(start::<b>T<:Real</b>, step::<b>T<:Real</b>, stop::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L96\" target=\"_blank\">range.jl:96</a><li> colon<i>{T<:Real}</i>(start::<b>T<:Real</b>, step::<b>Real</b>, stop::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L97\" target=\"_blank\">range.jl:97</a><li> colon(a::<b>Real</b>, b::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L80\" target=\"_blank\">range.jl:80</a><li> colon<i>{T<:Real}</i>(start::<b>T<:Real</b>, step, stop::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L95\" target=\"_blank\">range.jl:95</a><li> colon<i>{A<:Real,C<:Real}</i>(a::<b>A<:Real</b>, b, c::<b>C<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L93\" target=\"_blank\">range.jl:93</a><li> complex(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L49\" target=\"_blank\">complex.jl:49</a><li> complex(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L48\" target=\"_blank\">complex.jl:48</a><li> complex<i>{T<:Real}</i>(A::<b>Array{T<:Real,N}</b>, B::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L794\" target=\"_blank\">complex.jl:794</a><li> complex<i>{T<:Real}</i>(A::<b>Real</b>, B::<b>Array{T<:Real,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L786\" target=\"_blank\">complex.jl:786</a><li> complex128(r::<b>Real</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> complex32(r::<b>Real</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> complex64(r::<b>Real</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> cond<i>{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</i>(A::<b>LowerTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L411\" target=\"_blank\">linalg/triangular.jl:411</a><li> cond<i>{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</i>(A::<b>Base.LinAlg.UnitLowerTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L411\" target=\"_blank\">linalg/triangular.jl:411</a><li> cond<i>{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</i>(A::<b>UpperTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L411\" target=\"_blank\">linalg/triangular.jl:411</a><li> cond<i>{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</i>(A::<b>Base.LinAlg.UnitUpperTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/triangular.jl#L411\" target=\"_blank\">linalg/triangular.jl:411</a><li> cond(A::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/linalg.jl#L519\" target=\"_blank\">sparse/linalg.jl:519</a><li> cond(A::<b>AbstractArray{T,2}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/dense.jl#L504\" target=\"_blank\">linalg/dense.jl:504</a><li> condskeel<i>{T<:Integer}</i>(A::<b>AbstractArray{T<:Integer,2}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L343\" target=\"_blank\">linalg/generic.jl:343</a><li> condskeel<i>{T<:Integer}</i>(A::<b>AbstractArray{T<:Integer,2}</b>, x::<b>AbstractArray{T,1}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L345\" target=\"_blank\">linalg/generic.jl:345</a><li> condskeel(A::<b>AbstractArray{T,2}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L342\" target=\"_blank\">linalg/generic.jl:342</a><li> condskeel(A::<b>AbstractArray{T,2}</b>, x::<b>AbstractArray{T,1}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L344\" target=\"_blank\">linalg/generic.jl:344</a><li> conj(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L32\" target=\"_blank\">number.jl:32</a><li> convert(::<b>Type{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/bool.jl#L6\" target=\"_blank\">bool.jl:6</a><li> convert(::<b>Type{Integer}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L248\" target=\"_blank\">int.jl:248</a><li> convert<i>{T<:Real}</i>(::<b>Type{Complex{T<:Real}}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L16\" target=\"_blank\">complex.jl:16</a><li> convert(::<b>Type{Complex{T<:Real}}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L22\" target=\"_blank\">complex.jl:22</a><li> convert<i>{T<:Base.Dates.Period}</i>(::<b>Type{T<:Base.Dates.Period}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L22\" target=\"_blank\">dates/periods.jl:22</a><li> copysign(x::<b>Signed</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L44\" target=\"_blank\">int.jl:44</a><li> copysign(x::<b>Rational{T<:Integer}</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/rational.jl#L157\" target=\"_blank\">rational.jl:157</a><li> copysign(x::<b>Float32</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L7\" target=\"_blank\">floatfuncs.jl:7</a><li> copysign(x::<b>Float64</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L8\" target=\"_blank\">floatfuncs.jl:8</a><li> copysign(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L30\" target=\"_blank\">number.jl:30</a><li> copysign<i>{T1<:Real,T2<:Real}</i>(::<b>T1<:Real</b>, ::<b>AbstractArray{T2<:Real,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L391\" target=\"_blank\">operators.jl:391</a><li> copysign<i>{T1<:Real,T2<:Real}</i>(::<b>AbstractArray{T1<:Real,N}</b>, ::<b>T2<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L393\" target=\"_blank\">operators.jl:393</a><li> cos(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> cosd(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/trig.jl#L321\" target=\"_blank\">special/trig.jl:321</a><li> cosh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> cospi<i>{T<:Real}</i>(x::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/trig.jl#L187\" target=\"_blank\">special/trig.jl:187</a><li> deg2rad(z::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L97\" target=\"_blank\">math.jl:97</a><li> div<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L140\" target=\"_blank\">operators.jl:140</a><li> div(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L184\" target=\"_blank\">promotion.jl:184</a><li> div<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L49\" target=\"_blank\">dates/periods.jl:49</a><li> eigfact<i>{T}</i>(A::<b>SymTridiagonal{T}</b>, vl::<b>Real</b>, vu::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L126\" target=\"_blank\">linalg/tridiag.jl:126</a><li> eigfact<i>{T1<:Real,T2}</i>(A::<b>Union{Hermitian{Complex{T1<:Real},T2},Hermitian{T1<:Real,T2},Symmetric{T1<:Real,T2}}</b>, vl::<b>Real</b>, vh::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/symmetric.jl#L135\" target=\"_blank\">linalg/symmetric.jl:135</a><li> eigfact!<i>{T<:Union{Float32,Float64}}</i>(A::<b>SymTridiagonal{T<:Union{Float32,Float64}}</b>, vl::<b>Real</b>, vu::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L125\" target=\"_blank\">linalg/tridiag.jl:125</a><li> eigfact!<i>{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}</i>(A::<b>Union{Hermitian{Complex{T<:Union{Float32,Float64}},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Hermitian{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Symmetric{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}}</b>, vl::<b>Real</b>, vh::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/symmetric.jl#L133\" target=\"_blank\">linalg/symmetric.jl:133</a><li> eigvals<i>{T}</i>(A::<b>SymTridiagonal{T}</b>, vl::<b>Real</b>, vu::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L135\" target=\"_blank\">linalg/tridiag.jl:135</a><li> eigvals<i>{T1<:Real,T2}</i>(A::<b>Union{Hermitian{Complex{T1<:Real},T2},Hermitian{T1<:Real,T2},Symmetric{T1<:Real,T2}}</b>, vl::<b>Real</b>, vh::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/symmetric.jl#L152\" target=\"_blank\">linalg/symmetric.jl:152</a><li> eigvals!<i>{T<:Union{Float32,Float64}}</i>(A::<b>SymTridiagonal{T<:Union{Float32,Float64}}</b>, vl::<b>Real</b>, vu::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/tridiag.jl#L134\" target=\"_blank\">linalg/tridiag.jl:134</a><li> eigvals!<i>{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}</i>(A::<b>Union{Hermitian{Complex{T<:Union{Float32,Float64}},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Hermitian{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Symmetric{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}}</b>, vl::<b>Real</b>, vh::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/symmetric.jl#L150\" target=\"_blank\">linalg/symmetric.jl:150</a><li> erf(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> erfc(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> eta(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/gamma.jl#L482\" target=\"_blank\">special/gamma.jl:482</a><li> exp(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> exp2(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> expm1(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> extrema(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/reduce.jl#L333\" target=\"_blank\">reduce.jl:333</a><li> fld<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L141\" target=\"_blank\">operators.jl:141</a><li> fld(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L185\" target=\"_blank\">promotion.jl:185</a><li> flipsign(x::<b>Signed</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/int.jl#L39\" target=\"_blank\">int.jl:39</a><li> flipsign(x::<b>Float32</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L13\" target=\"_blank\">floatfuncs.jl:13</a><li> flipsign(x::<b>Float64</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L14\" target=\"_blank\">floatfuncs.jl:14</a><li> flipsign<i>{T1<:Real,T2<:Real}</i>(::<b>T1<:Real</b>, ::<b>AbstractArray{T2<:Real,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L391\" target=\"_blank\">operators.jl:391</a><li> flipsign<i>{T1<:Real,T2<:Real}</i>(::<b>AbstractArray{T1<:Real,N}</b>, ::<b>T2<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L393\" target=\"_blank\">operators.jl:393</a><li> floor(x::<b>Real</b>, digits::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> floor(x::<b>Real</b>, digits::<b>Integer</b>, base::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> gamma(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/gamma.jl#L5\" target=\"_blank\">special/gamma.jl:5</a><li> getindex(t::<b>Tuple</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/tuple.jl#L9\" target=\"_blank\">tuple.jl:9</a><li> getindex(p::<b>Pair{A,B}</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L447\" target=\"_blank\">operators.jl:447</a><li> getindex(A::<b>Array{T,N}</b>, i1::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/array.jl#L282\" target=\"_blank\">array.jl:282</a><li> getindex(A::<b>Array{T,N}</b>, i1::<b>Real</b>, i2::<b>Real</b>, I::<b>Real...</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/array.jl#L283\" target=\"_blank\">array.jl:283</a><li> getindex(S::<b>SharedArray{T,N}</b>, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sharedarray.jl#L357\" target=\"_blank\">sharedarray.jl:357</a><li> getindex(s::<b>AbstractString</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> gradient(F::<b>BitArray{1}</b>, h::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/bitarray.jl#L73\" target=\"_blank\">linalg/bitarray.jl:73</a><li> gradient(F::<b>AbstractArray{T,1}</b>, h::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L61\" target=\"_blank\">linalg/generic.jl:61</a><li> hash(x::<b>Real</b>, h::<b>UInt64</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/hashing2.jl#L32\" target=\"_blank\">hashing2.jl:32</a><li> hypot(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L149\" target=\"_blank\">math.jl:149</a><li> imag(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L34\" target=\"_blank\">complex.jl:34</a><li> invdigamma(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/gamma.jl#L402\" target=\"_blank\">special/gamma.jl:402</a><li> isequal(x::<b>Real</b>, y::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L15\" target=\"_blank\">operators.jl:15</a><li> isequal(x::<b>AbstractFloat</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L16\" target=\"_blank\">operators.jl:16</a><li> isfinite(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L327\" target=\"_blank\">float.jl:327</a><li> isinf(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L330\" target=\"_blank\">float.jl:330</a><li> isless(x::<b>Real</b>, y::<b>AbstractFloat</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L19\" target=\"_blank\">operators.jl:19</a><li> isless(x::<b>AbstractFloat</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L20\" target=\"_blank\">operators.jl:20</a><li> isless(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L45\" target=\"_blank\">operators.jl:45</a><li> isnan(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L324\" target=\"_blank\">float.jl:324</a><li> isreal(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L40\" target=\"_blank\">complex.jl:40</a><li> itrunc<i>{T<:Integer}</i>(::<b>Type{T<:Integer}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/deprecated.jl#L49\" target=\"_blank\">deprecated.jl:49</a><li> lexcmp(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L46\" target=\"_blank\">operators.jl:46</a><li> lfact(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/gamma.jl#L20\" target=\"_blank\">special/gamma.jl:20</a><li> lgamma(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> linspace<i>{T<:AbstractFloat}</i>(start::<b>T<:AbstractFloat</b>, stop::<b>T<:AbstractFloat</b>, len::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L230\" target=\"_blank\">range.jl:230</a><li> linspace(start::<b>Real</b>, stop::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L234\" target=\"_blank\">range.jl:234</a><li> linspace(start::<b>Real</b>, stop::<b>Real</b>, len::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L234\" target=\"_blank\">range.jl:234</a><li> log(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> log10(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> log1p(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> log2(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> logspace(start::<b>Real</b>, stop::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L247\" target=\"_blank\">range.jl:247</a><li> logspace(start::<b>Real</b>, stop::<b>Real</b>, n::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L247\" target=\"_blank\">range.jl:247</a><li> max<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L239\" target=\"_blank\">promotion.jl:239</a><li> max(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L194\" target=\"_blank\">promotion.jl:194</a><li> max<i>{T1<:Real,T2<:Real}</i>(::<b>T1<:Real</b>, ::<b>AbstractArray{T2<:Real,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L391\" target=\"_blank\">operators.jl:391</a><li> max<i>{T1<:Real,T2<:Real}</i>(::<b>AbstractArray{T1<:Real,N}</b>, ::<b>T2<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L393\" target=\"_blank\">operators.jl:393</a><li> middle(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/statistics.jl#L467\" target=\"_blank\">statistics.jl:467</a><li> middle(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/statistics.jl#L474\" target=\"_blank\">statistics.jl:474</a><li> min<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L240\" target=\"_blank\">promotion.jl:240</a><li> min(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L195\" target=\"_blank\">promotion.jl:195</a><li> min<i>{T1<:Real,T2<:Real}</i>(::<b>T1<:Real</b>, ::<b>AbstractArray{T2<:Real,N}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L391\" target=\"_blank\">operators.jl:391</a><li> min<i>{T1<:Real,T2<:Real}</i>(::<b>AbstractArray{T1<:Real,N}</b>, ::<b>T2<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L393\" target=\"_blank\">operators.jl:393</a><li> minmax<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L241\" target=\"_blank\">promotion.jl:241</a><li> minmax(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L196\" target=\"_blank\">promotion.jl:196</a><li> mod<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L233\" target=\"_blank\">promotion.jl:233</a><li> mod(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L188\" target=\"_blank\">promotion.jl:188</a><li> mod<i>{P<:Base.Dates.Period}</i>(x::<b>P<:Base.Dates.Period</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/dates/periods.jl#L49\" target=\"_blank\">dates/periods.jl:49</a><li> mod1<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L153\" target=\"_blank\">operators.jl:153</a><li> mod1(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L190\" target=\"_blank\">promotion.jl:190</a><li> nextpow(a::<b>Real</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/intfuncs.jl#L143\" target=\"_blank\">intfuncs.jl:143</a><li> norm(A::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/linalg.jl#L483\" target=\"_blank\">sparse/linalg.jl:483</a><li> norm(x::<b>AbstractArray{T,1}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L191\" target=\"_blank\">linalg/generic.jl:191</a><li> norm<i>{T}</i>(A::<b>AbstractArray{T,2}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L232\" target=\"_blank\">linalg/generic.jl:232</a><li> norm(x::<b>Number</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L243\" target=\"_blank\">linalg/generic.jl:243</a><li> pinv<i>{T}</i>(A::<b>Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}</b>, tol::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/dense.jl#L455\" target=\"_blank\">linalg/dense.jl:455</a><li> pinv<i>{T}</i>(D::<b>Diagonal{T}</b>, tol::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/diagonal.jl#L189\" target=\"_blank\">linalg/diagonal.jl:189</a><li> poll_fd(s::<b>RawFD</b>, timeout_s::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/poll.jl#L344\" target=\"_blank\">poll.jl:344</a><li> poll_file(s::<b>AbstractString</b>, interval_seconds::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/poll.jl#L384\" target=\"_blank\">poll.jl:384</a><li> poll_file(s::<b>AbstractString</b>, interval_seconds::<b>Real</b>, timeout_s::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/poll.jl#L384\" target=\"_blank\">poll.jl:384</a><li> prevpow(a::<b>Real</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/intfuncs.jl#L152\" target=\"_blank\">intfuncs.jl:152</a><li> quantile!(v::<b>AbstractArray{T,1}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/statistics.jl#L558\" target=\"_blank\">statistics.jl:558</a><li> rad2deg(z::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L96\" target=\"_blank\">math.jl:96</a><li> randsubseq<i>{T}</i>(r::<b>AbstractRNG</b>, A::<b>AbstractArray{T,N}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/random.jl#L1324\" target=\"_blank\">random.jl:1324</a><li> randsubseq(A::<b>AbstractArray{T,N}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/random.jl#L1325\" target=\"_blank\">random.jl:1325</a><li> randsubseq!(r::<b>AbstractRNG</b>, S::<b>AbstractArray{T,N}</b>, A::<b>AbstractArray{T,N}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/random.jl#L1289\" target=\"_blank\">random.jl:1289</a><li> randsubseq!(S::<b>AbstractArray{T,N}</b>, A::<b>AbstractArray{T,N}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/random.jl#L1322\" target=\"_blank\">random.jl:1322</a><li> range(a::<b>Real</b>, len::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L84\" target=\"_blank\">range.jl:84</a><li> range(a::<b>Real</b>, st::<b>AbstractFloat</b>, len::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L170\" target=\"_blank\">range.jl:170</a><li> range(a::<b>AbstractFloat</b>, st::<b>Real</b>, len::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/range.jl#L171\" target=\"_blank\">range.jl:171</a><li> rank(A::<b>AbstractArray{T,2}</b>, tol::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L296\" target=\"_blank\">linalg/generic.jl:296</a><li> real(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L33\" target=\"_blank\">complex.jl:33</a><li> rem1<i>{T<:Real}</i>(x::<b>T<:Real</b>, y::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/operators.jl#L154\" target=\"_blank\">operators.jl:154</a><li> rem1(x::<b>Real</b>, y::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/promotion.jl#L191\" target=\"_blank\">promotion.jl:191</a><li> round(x::<b>Real</b>, ::<b>RoundingMode{:ToZero}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L49\" target=\"_blank\">floatfuncs.jl:49</a><li> round(x::<b>Real</b>, ::<b>RoundingMode{:Up}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L50\" target=\"_blank\">floatfuncs.jl:50</a><li> round(x::<b>Real</b>, ::<b>RoundingMode{:Down}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L51\" target=\"_blank\">floatfuncs.jl:51</a><li> round(x::<b>Real</b>, digits::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> round(x::<b>Real</b>, digits::<b>Integer</b>, base::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> scale!<i>{T<:Union{Complex{Float32},Complex{Float64}}}</i>(X::<b>Array{T<:Union{Complex{Float32},Complex{Float64}},N}</b>, s::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/dense.jl#L23\" target=\"_blank\">linalg/dense.jl:23</a><li> searchsorted<i>{T<:Real}</i>(a::<b>Range{T<:Real}</b>, x::<b>Real</b>, o::<b>Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sort.jl#L178\" target=\"_blank\">sort.jl:178</a><li> searchsortedfirst<i>{T<:Integer}</i>(a::<b>Range{T<:Integer}</b>, x::<b>Real</b>, o::<b>Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sort.jl#L155\" target=\"_blank\">sort.jl:155</a><li> searchsortedfirst<i>{T<:Real}</i>(a::<b>Range{T<:Real}</b>, x::<b>Real</b>, o::<b>Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sort.jl#L138\" target=\"_blank\">sort.jl:138</a><li> searchsortedlast<i>{T<:Integer}</i>(a::<b>Range{T<:Integer}</b>, x::<b>Real</b>, o::<b>Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sort.jl#L147\" target=\"_blank\">sort.jl:147</a><li> searchsortedlast<i>{T<:Real}</i>(a::<b>Range{T<:Real}</b>, x::<b>Real</b>, o::<b>Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sort.jl#L129\" target=\"_blank\">sort.jl:129</a><li> setindex!<i>{T}</i>(A::<b>Array{T,N}</b>, x, i1::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/array.jl#L313\" target=\"_blank\">array.jl:313</a><li> setindex!<i>{T}</i>(A::<b>Array{T,N}</b>, x, i1::<b>Real</b>, i2::<b>Real</b>, I::<b>Real...</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/array.jl#L314\" target=\"_blank\">array.jl:314</a><li> setindex!(S::<b>SharedArray{T,N}</b>, x, i::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sharedarray.jl#L359\" target=\"_blank\">sharedarray.jl:359</a><li> sign(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L26\" target=\"_blank\">number.jl:26</a><li> signbit(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/number.jl#L24\" target=\"_blank\">number.jl:24</a><li> signif(x::<b>Real</b>, digits::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L132\" target=\"_blank\">floatfuncs.jl:132</a><li> signif(x::<b>Real</b>, digits::<b>Integer</b>, base::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L132\" target=\"_blank\">floatfuncs.jl:132</a><li> sin(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> sind(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/trig.jl#L289\" target=\"_blank\">special/trig.jl:289</a><li> sinh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> sinpi<i>{T<:Real}</i>(x::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/trig.jl#L133\" target=\"_blank\">special/trig.jl:133</a><li> sleep(sec::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/stream.jl#L695\" target=\"_blank\">stream.jl:695</a><li> sqrt(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L146\" target=\"_blank\">math.jl:146</a><li> tan(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L139\" target=\"_blank\">math.jl:139</a><li> tand(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/trig.jl#L347\" target=\"_blank\">special/trig.jl:347</a><li> tanh(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/math.jl#L115\" target=\"_blank\">math.jl:115</a><li> trunc(x::<b>Real</b>, digits::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> trunc(x::<b>Real</b>, digits::<b>Integer</b>, base::<b>Integer</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/floatfuncs.jl#L148\" target=\"_blank\">floatfuncs.jl:148</a><li> typemax<i>{T<:Real}</i>(x::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L399\" target=\"_blank\">float.jl:399</a><li> typemin<i>{T<:Real}</i>(x::<b>T<:Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/float.jl#L398\" target=\"_blank\">float.jl:398</a><li> vecnorm(x::<b>Number</b>, p::<b>Real</b>)<li> vecnorm(A::<b>SparseMatrixCSC{Tv,Ti<:Integer}</b>, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/sparse/linalg.jl#L480\" target=\"_blank\">sparse/linalg.jl:480</a><li> vecnorm(itr, p::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/linalg/generic.jl#L173\" target=\"_blank\">linalg/generic.jl:173</a><li> watch_file(s::<b>AbstractString</b>, timeout_s::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/poll.jl#L364\" target=\"_blank\">poll.jl:364</a><li> zeta(x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/special/gamma.jl#L463\" target=\"_blank\">special/gamma.jl:463</a></ul>"
      ],
      "text/plain": [
       "326-element Array{Method,1}:\n",
       " rem{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:232                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " rem(x::Real, y::Real) at promotion.jl:187                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " rem{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::Real) at dates/periods.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " *(x::Real, z::Complex{Bool}) at complex.jl:140                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " *(z::Complex{Bool}, x::Real) at complex.jl:141                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " *(x::Real, z::Complex{T<:Real}) at complex.jl:152                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " *(z::Complex{T<:Real}, x::Real) at complex.jl:153                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " *(y::Real, x::Base.Dates.Period) at dates/periods.jl:55                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " *{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::Real) at dates/periods.jl:54                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " +(x::Real, z::Complex{Bool}) at complex.jl:132                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " +(z::Complex{Bool}, x::Real) at complex.jl:133                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " +(x::Real, z::Complex{T<:Real}) at complex.jl:144                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " +(z::Complex{T<:Real}, x::Real) at complex.jl:145                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " -(z::Complex{Bool}, x::Real) at complex.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " -(x::Real, z::Complex{Bool}) at complex.jl:136                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " -(x::Real, z::Complex{T<:Real}) at complex.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " -(z::Complex{T<:Real}, x::Real) at complex.jl:151                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " .%(x::Real, y::Real) at operators.jl:149                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .*(x::Real, r::OrdinalRange{T,S}) at range.jl:574                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " .*(x::Real, r::FloatRange{T<:AbstractFloat}) at range.jl:575                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " .*(x::Real, r::LinSpace{T<:AbstractFloat}) at range.jl:576                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " .*(r::FloatRange{T<:AbstractFloat}, x::Real) at range.jl:578                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " .*(r::LinSpace{T<:AbstractFloat}, x::Real) at range.jl:579                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " .*(r::Range{T}, x::Real) at range.jl:577                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .*{P<:Base.Dates.Period}(y::Real, X::Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}) at dates/periods.jl:56                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " .*{P<:Base.Dates.Period}(X::Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, y::Real) at dates/periods.jl:66                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " .+(x::Real, r::UnitRange{T<:Real}) at range.jl:549                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " .+(x::Real, r::FloatRange{T<:AbstractFloat}) at range.jl:552                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " .+{T}(x::Real, r::LinSpace{T}) at range.jl:554                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " .+(x::Real, r::Range{T}) at range.jl:550                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .+(r::Range{T}, x::Real) at range.jl:557                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .-(x::Real, r::FloatRange{T<:AbstractFloat}) at range.jl:561                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " .-(x::Real, r::LinSpace{T<:AbstractFloat}) at range.jl:563                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " .-(x::Real, r::Range{T}) at range.jl:560                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .-(r::UnitRange{T<:Real}, x::Real) at range.jl:566                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " .-(r::StepRange{T,S}, x::Real) at range.jl:567                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " .-(r::FloatRange{T<:AbstractFloat}, x::Real) at range.jl:568                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " .-(r::LinSpace{T<:AbstractFloat}, x::Real) at range.jl:570                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " ./(r::OrdinalRange{T,S}, x::Real) at range.jl:581                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " ./(r::FloatRange{T<:AbstractFloat}, x::Real) at range.jl:582                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " ./(r::LinSpace{T<:AbstractFloat}, x::Real) at range.jl:583                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " ./{P<:Base.Dates.Period}(X::Union{DenseArray{P<:Base.Dates.Period,N},SubArray{P<:Base.Dates.Period,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, y::Real) at dates/periods.jl:66                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " .<(x::Real, y::Real) at operators.jl:124                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " .<=(x::Real, y::Real) at operators.jl:125                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " /(a::Real, z::Complex{T<:Real}) at complex.jl:155                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " /(z::Complex{T<:Real}, x::Real) at complex.jl:156                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " /{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::Real) at dates/periods.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " //(x::Complex{T<:Real}, y::Real) at rational.jl:38                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " <{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:226                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " <(x::Real, y::Real) at promotion.jl:181                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " <={T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:227                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " <=(x::Real, y::Real) at promotion.jl:182                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " ==(z::Complex{T<:Real}, x::Real) at complex.jl:84                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " ==(x::Real, z::Complex{T<:Real}) at complex.jl:85                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " ==(x::Irrational{sym}, y::Real) at irrationals.jl:27                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " ==(x::Real, y::Irrational{sym}) at irrationals.jl:28                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " A_ldiv_B!{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64}}(A::Base.LinAlg.QRPivoted{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S<:AbstractArray{T,2}}, B::Union{DenseArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2},SubArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, rcond::Real) at linalg/qr.jl:304                                                                                                                                                                                                                            \n",
       " abs(x::Real) at number.jl:28                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " abs2(x::Real) at number.jl:29                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " acos(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " acosh(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " airy(k::Number, x::Real) at special/bessel.jl:89                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " airyx(k::Number, x::Real) at special/bessel.jl:109                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " angle(z::Real) at number.jl:36                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " asin(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " asinh(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " atan(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " atan2(y::Real, x::Real) at math.jl:169                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " atanh(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " besselh(nu::Real, k::Integer, z::Complex{Float32}) at special/bessel.jl:267                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " besselh(nu::Real, k::Integer, z::Complex{T<:Real}) at special/bessel.jl:268                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " besselh(nu::Real, k::Integer, x::Real) at special/bessel.jl:269                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besselhx(nu::Real, k::Integer, z::Complex{Float32}) at special/bessel.jl:278                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " besselhx(nu::Real, k::Integer, z::Complex{T<:Real}) at special/bessel.jl:279                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " besselhx(nu::Real, k::Integer, x::Real) at special/bessel.jl:280                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besseli(nu::Real, x::AbstractFloat) at special/bessel.jl:289                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " besseli(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besseli(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besseli(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " besselix(nu::Real, x::AbstractFloat) at special/bessel.jl:296                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " besselix(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselix(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselix(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " besselj(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besselj(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besselj(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " besselj0(x::Real) at special/bessel.jl:19                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " besselj1(x::Real) at special/bessel.jl:19                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " besseljx(nu::Real, x::AbstractFloat) at special/bessel.jl:314                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " besseljx(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besseljx(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besseljx(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " besselk(nu::Real, x::AbstractFloat) at special/bessel.jl:321                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " besselk(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besselk(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " besselk(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " besselkx(nu::Real, x::AbstractFloat) at special/bessel.jl:331                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " besselkx(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselkx(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselkx(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " bessely(nu::Real, x::AbstractFloat) at special/bessel.jl:341                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " bessely(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " bessely(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " bessely(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " bessely0(x::Real) at special/bessel.jl:19                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " bessely1(x::Real) at special/bessel.jl:19                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " besselyx(nu::Real, x::AbstractFloat) at special/bessel.jl:363                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " besselyx(nu::Real, z::Complex{Float32}) at special/bessel.jl:372                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselyx(nu::Real, z::Complex{T<:Real}) at special/bessel.jl:373                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " besselyx(nu::Real, x::Integer) at special/bessel.jl:374                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " call{T<:Real}(::Type{UnitRange{T<:Real}}, start::T<:Real, stop::T<:Real) at range.jl:71                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " call(::Type{FloatRange{T<:AbstractFloat}}, a::AbstractFloat, s::AbstractFloat, l::Real, d::AbstractFloat) at range.jl:111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " call{T<:AbstractFloat}(::Type{T<:AbstractFloat}, x::Real, r::RoundingMode{T}) at rounding.jl:69                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " call(::Type{Complex{T<:Real}}, x::Real) at complex.jl:8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " call{T<:Real}(::Type{Complex{T<:Real}}, re::T<:Real, im::T<:Real) at complex.jl:4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " call(::Type{Complex{T<:Real}}, x::Real, y::Real) at complex.jl:7                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " call(::Type{Base.Libc.TmStruct}, t::Real) at libc.jl:101                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " call(::Type{Timer}, timeout::Real) at stream.jl:640                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " call(::Type{Timer}, timeout::Real, repeat::Real) at stream.jl:640                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " call(::Type{Timer}, cb::Function, timeout::Real) at stream.jl:702                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " call(::Type{Timer}, cb::Function, timeout::Real, repeat::Real) at stream.jl:702                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " call{T}(::Type{Base.LinAlg.CholeskyPivoted{T,S<:AbstractArray{T,2}}}, A::AbstractArray{T,2}, uplo::Char, piv::Array{Int64,1}, rank::Int64, tol::Real, info::Int64) at linalg/cholesky.jl:23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " call{K,inplace,N}(::Type{Base.DFT.FFTW.cFFTWPlan{Complex{Float64},K,inplace,N}}, X::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:461                                                                                                                                                                                                                                           \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.rFFTWPlan{Float64,-1,inplace,N}}, X::Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:482                                                                                                                                                                                                                                                                       \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.rFFTWPlan{Complex{Float64},1,inplace,N}}, X::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:503                                                                                                                                                                                                                                                               \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.r2rFFTWPlan{Float64,ANY,inplace,N}}, X::Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Float64,N},SubArray{Float64,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, kinds, flags::Integer, timelimit::Real) at fft/FFTW.jl:525                                                                                                                                                                                                                                                                               \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.r2rFFTWPlan{Complex{Float64},ANY,inplace,N}}, X::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float64},N},SubArray{Complex{Float64},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, kinds, flags::Integer, timelimit::Real) at fft/FFTW.jl:548                                                                                                                                                                                                                                  \n",
       " call{K,inplace,N}(::Type{Base.DFT.FFTW.cFFTWPlan{Complex{Float32},K,inplace,N}}, X::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:461                                                                                                                                                                                                                                           \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.rFFTWPlan{Float32,-1,inplace,N}}, X::Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:482                                                                                                                                                                                                                                                                       \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.rFFTWPlan{Complex{Float32},1,inplace,N}}, X::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, flags::Integer, timelimit::Real) at fft/FFTW.jl:503                                                                                                                                                                                                                                                               \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.r2rFFTWPlan{Float32,ANY,inplace,N}}, X::Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Float32,N},SubArray{Float32,N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, kinds, flags::Integer, timelimit::Real) at fft/FFTW.jl:525                                                                                                                                                                                                                                                                               \n",
       " call{inplace,N}(::Type{Base.DFT.FFTW.r2rFFTWPlan{Complex{Float32},ANY,inplace,N}}, X::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, Y::Union{DenseArray{Complex{Float32},N},SubArray{Complex{Float32},N,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, region, kinds, flags::Integer, timelimit::Real) at fft/FFTW.jl:548                                                                                                                                                                                                                                  \n",
       " call(::Type{Base.QuadGK.Segment}, a::Number, b::Number, I, E::Real) at quadgk.jl:40                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " cbrt(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " ceil(x::Real, digits::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " ceil(x::Real, digits::Integer, base::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " checkbounds(::Type{Bool}, sz::Integer, i::Real) at abstractarray.jl:140                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " checkbounds(s::AbstractString, i::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " circshift(a::AbstractArray{T,N}, shiftamt::Real) at abstractarraymath.jl:97                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cis(theta::Real) at complex.jl:309                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " cld{T<:Real}(x::T<:Real, y::T<:Real) at operators.jl:142                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " cld(x::Real, y::Real) at promotion.jl:186                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " cmp(x::Real, y::AbstractFloat) at float.jl:259                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " cmp(x::AbstractFloat, y::Real) at float.jl:264                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " colon{T<:Real}(a::T<:Real, b::AbstractFloat, c::T<:Real) at range.jl:164                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " colon{T<:AbstractFloat}(a::T<:AbstractFloat, b::Real, c::T<:AbstractFloat) at range.jl:166                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " colon{T<:Real}(start::T<:Real, stop::T<:Real) at range.jl:82                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " colon{T<:Real}(start::T<:Real, step::T<:Real, stop::T<:Real) at range.jl:96                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " colon{T<:Real}(start::T<:Real, step::Real, stop::T<:Real) at range.jl:97                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " colon(a::Real, b::Real) at range.jl:80                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " colon{T<:Real}(start::T<:Real, step, stop::T<:Real) at range.jl:95                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " colon{A<:Real,C<:Real}(a::A<:Real, b, c::C<:Real) at range.jl:93                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " complex(x::Real) at complex.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " complex(x::Real, y::Real) at complex.jl:48                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " complex{T<:Real}(A::Array{T<:Real,N}, B::Real) at complex.jl:794                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " complex{T<:Real}(A::Real, B::Array{T<:Real,N}) at complex.jl:786                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " complex128(r::Real, i::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " complex32(r::Real, i::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " complex64(r::Real, i::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " cond{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}(A::LowerTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}, p::Real) at linalg/triangular.jl:411                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cond{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}(A::Base.LinAlg.UnitLowerTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}, p::Real) at linalg/triangular.jl:411                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cond{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}(A::UpperTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}, p::Real) at linalg/triangular.jl:411                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cond{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}(A::Base.LinAlg.UnitUpperTriangular{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},S}, p::Real) at linalg/triangular.jl:411                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cond(A::SparseMatrixCSC{Tv,Ti<:Integer}, p::Real) at sparse/linalg.jl:519                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " cond(A::AbstractArray{T,2}, p::Real) at linalg/dense.jl:504                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " condskeel{T<:Integer}(A::AbstractArray{T<:Integer,2}, p::Real) at linalg/generic.jl:343                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " condskeel{T<:Integer}(A::AbstractArray{T<:Integer,2}, x::AbstractArray{T,1}, p::Real) at linalg/generic.jl:345                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " condskeel(A::AbstractArray{T,2}, p::Real) at linalg/generic.jl:342                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " condskeel(A::AbstractArray{T,2}, x::AbstractArray{T,1}, p::Real) at linalg/generic.jl:344                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " conj(x::Real) at number.jl:32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " convert(::Type{Bool}, x::Real) at bool.jl:6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " convert(::Type{Integer}, x::Real) at int.jl:248                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " convert{T<:Real}(::Type{Complex{T<:Real}}, x::Real) at complex.jl:16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " convert(::Type{Complex{T<:Real}}, x::Real) at complex.jl:22                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " convert{T<:Base.Dates.Period}(::Type{T<:Base.Dates.Period}, x::Real) at dates/periods.jl:22                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " copysign(x::Signed, y::Real) at int.jl:44                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " copysign(x::Rational{T<:Integer}, y::Real) at rational.jl:157                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " copysign(x::Float32, y::Real) at floatfuncs.jl:7                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " copysign(x::Float64, y::Real) at floatfuncs.jl:8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " copysign(x::Real, y::Real) at number.jl:30                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " copysign{T1<:Real,T2<:Real}(::T1<:Real, ::AbstractArray{T2<:Real,N}) at operators.jl:391                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " copysign{T1<:Real,T2<:Real}(::AbstractArray{T1<:Real,N}, ::T2<:Real) at operators.jl:393                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " cos(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " cosd(x::Real) at special/trig.jl:321                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " cosh(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " cospi{T<:Real}(x::T<:Real) at special/trig.jl:187                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " deg2rad(z::Real) at math.jl:97                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " div{T<:Real}(x::T<:Real, y::T<:Real) at operators.jl:140                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " div(x::Real, y::Real) at promotion.jl:184                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " div{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::Real) at dates/periods.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " eigfact{T}(A::SymTridiagonal{T}, vl::Real, vu::Real) at linalg/tridiag.jl:126                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " eigfact{T1<:Real,T2}(A::Union{Hermitian{Complex{T1<:Real},T2},Hermitian{T1<:Real,T2},Symmetric{T1<:Real,T2}}, vl::Real, vh::Real) at linalg/symmetric.jl:135                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " eigfact!{T<:Union{Float32,Float64}}(A::SymTridiagonal{T<:Union{Float32,Float64}}, vl::Real, vu::Real) at linalg/tridiag.jl:125                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " eigfact!{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}(A::Union{Hermitian{Complex{T<:Union{Float32,Float64}},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Hermitian{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Symmetric{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}}, vl::Real, vh::Real) at linalg/symmetric.jl:133\n",
       " eigvals{T}(A::SymTridiagonal{T}, vl::Real, vu::Real) at linalg/tridiag.jl:135                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " eigvals{T1<:Real,T2}(A::Union{Hermitian{Complex{T1<:Real},T2},Hermitian{T1<:Real,T2},Symmetric{T1<:Real,T2}}, vl::Real, vh::Real) at linalg/symmetric.jl:152                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " eigvals!{T<:Union{Float32,Float64}}(A::SymTridiagonal{T<:Union{Float32,Float64}}, vl::Real, vu::Real) at linalg/tridiag.jl:134                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " eigvals!{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}(A::Union{Hermitian{Complex{T<:Union{Float32,Float64}},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Hermitian{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}},Symmetric{T<:Union{Float32,Float64},S<:Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}}}, vl::Real, vh::Real) at linalg/symmetric.jl:150\n",
       " erf(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " erfc(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " eta(x::Real) at special/gamma.jl:482                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " exp(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " exp2(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " expm1(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " extrema(x::Real) at reduce.jl:333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " fld{T<:Real}(x::T<:Real, y::T<:Real) at operators.jl:141                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " fld(x::Real, y::Real) at promotion.jl:185                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " flipsign(x::Signed, y::Real) at int.jl:39                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " flipsign(x::Float32, y::Real) at floatfuncs.jl:13                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " flipsign(x::Float64, y::Real) at floatfuncs.jl:14                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " flipsign{T1<:Real,T2<:Real}(::T1<:Real, ::AbstractArray{T2<:Real,N}) at operators.jl:391                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " flipsign{T1<:Real,T2<:Real}(::AbstractArray{T1<:Real,N}, ::T2<:Real) at operators.jl:393                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " floor(x::Real, digits::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " floor(x::Real, digits::Integer, base::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " gamma(x::Real) at special/gamma.jl:5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " getindex(t::Tuple, i::Real) at tuple.jl:9                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " getindex(p::Pair{A,B}, i::Real) at operators.jl:447                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " getindex(A::Array{T,N}, i1::Real) at array.jl:282                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " getindex(A::Array{T,N}, i1::Real, i2::Real, I::Real...) at array.jl:283                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " getindex(S::SharedArray{T,N}, i::Real) at sharedarray.jl:357                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " getindex(s::AbstractString, x::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " gradient(F::BitArray{1}, h::Real) at linalg/bitarray.jl:73                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " gradient(F::AbstractArray{T,1}, h::Real) at linalg/generic.jl:61                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " hash(x::Real, h::UInt64) at hashing2.jl:32                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " hypot(x::Real, y::Real) at math.jl:149                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " imag(x::Real) at complex.jl:34                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " invdigamma(x::Real) at special/gamma.jl:402                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " isequal(x::Real, y::AbstractFloat) at operators.jl:15                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \n",
       " isequal(x::AbstractFloat, y::Real) at operators.jl:16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \n",
       " isfinite(x::Real) at float.jl:327                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " isinf(x::Real) at float.jl:330                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " isless(x::Real, y::AbstractFloat) at operators.jl:19                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " isless(x::AbstractFloat, y::Real) at operators.jl:20                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " isless(x::Real, y::Real) at operators.jl:45                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " isnan(x::Real) at float.jl:324                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " isreal(x::Real) at complex.jl:40                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " itrunc{T<:Integer}(::Type{T<:Integer}, x::Real) at deprecated.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " lexcmp(x::Real, y::Real) at operators.jl:46                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " lfact(x::Real) at special/gamma.jl:20                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \n",
       " lgamma(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " linspace{T<:AbstractFloat}(start::T<:AbstractFloat, stop::T<:AbstractFloat, len::Real) at range.jl:230                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \n",
       " linspace(start::Real, stop::Real) at range.jl:234                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " linspace(start::Real, stop::Real, len::Real) at range.jl:234                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " log(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " log10(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " log1p(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " log2(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " logspace(start::Real, stop::Real) at range.jl:247                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " logspace(start::Real, stop::Real, n::Integer) at range.jl:247                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " max{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:239                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " max(x::Real, y::Real) at promotion.jl:194                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " max{T1<:Real,T2<:Real}(::T1<:Real, ::AbstractArray{T2<:Real,N}) at operators.jl:391                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " max{T1<:Real,T2<:Real}(::AbstractArray{T1<:Real,N}, ::T2<:Real) at operators.jl:393                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " middle(x::Real) at statistics.jl:467                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " middle(x::Real, y::Real) at statistics.jl:474                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " min{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:240                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " min(x::Real, y::Real) at promotion.jl:195                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " min{T1<:Real,T2<:Real}(::T1<:Real, ::AbstractArray{T2<:Real,N}) at operators.jl:391                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " min{T1<:Real,T2<:Real}(::AbstractArray{T1<:Real,N}, ::T2<:Real) at operators.jl:393                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " minmax{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:241                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " minmax(x::Real, y::Real) at promotion.jl:196                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " mod{T<:Real}(x::T<:Real, y::T<:Real) at promotion.jl:233                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " mod(x::Real, y::Real) at promotion.jl:188                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " mod{P<:Base.Dates.Period}(x::P<:Base.Dates.Period, y::Real) at dates/periods.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " mod1{T<:Real}(x::T<:Real, y::T<:Real) at operators.jl:153                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " mod1(x::Real, y::Real) at promotion.jl:190                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " nextpow(a::Real, x::Real) at intfuncs.jl:143                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " norm(A::SparseMatrixCSC{Tv,Ti<:Integer}, p::Real) at sparse/linalg.jl:483                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " norm(x::AbstractArray{T,1}, p::Real) at linalg/generic.jl:191                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " norm{T}(A::AbstractArray{T,2}, p::Real) at linalg/generic.jl:232                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " norm(x::Number, p::Real) at linalg/generic.jl:243                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " pinv{T}(A::Union{DenseArray{T,2},SubArray{T,2,A<:DenseArray{T,N},I<:Tuple{Vararg{Union{Colon,Int64,Range{Int64}}}},LD}}, tol::Real) at linalg/dense.jl:455                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " pinv{T}(D::Diagonal{T}, tol::Real) at linalg/diagonal.jl:189                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " poll_fd(s::RawFD, timeout_s::Real) at poll.jl:344                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " poll_file(s::AbstractString, interval_seconds::Real) at poll.jl:384                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " poll_file(s::AbstractString, interval_seconds::Real, timeout_s::Real) at poll.jl:384                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " prevpow(a::Real, x::Real) at intfuncs.jl:152                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " quantile!(v::AbstractArray{T,1}, p::Real) at statistics.jl:558                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " rad2deg(z::Real) at math.jl:96                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " randsubseq{T}(r::AbstractRNG, A::AbstractArray{T,N}, p::Real) at random.jl:1324                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " randsubseq(A::AbstractArray{T,N}, p::Real) at random.jl:1325                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " randsubseq!(r::AbstractRNG, S::AbstractArray{T,N}, A::AbstractArray{T,N}, p::Real) at random.jl:1289                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " randsubseq!(S::AbstractArray{T,N}, A::AbstractArray{T,N}, p::Real) at random.jl:1322                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " range(a::Real, len::Integer) at range.jl:84                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " range(a::Real, st::AbstractFloat, len::Integer) at range.jl:170                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " range(a::AbstractFloat, st::Real, len::Integer) at range.jl:171                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " rank(A::AbstractArray{T,2}, tol::Real) at linalg/generic.jl:296                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      \n",
       " real(x::Real) at complex.jl:33                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " rem1{T<:Real}(x::T<:Real, y::T<:Real) at operators.jl:154                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " rem1(x::Real, y::Real) at promotion.jl:191                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \n",
       " round(x::Real, ::RoundingMode{:ToZero}) at floatfuncs.jl:49                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " round(x::Real, ::RoundingMode{:Up}) at floatfuncs.jl:50                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " round(x::Real, ::RoundingMode{:Down}) at floatfuncs.jl:51                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            \n",
       " round(x::Real, digits::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " round(x::Real, digits::Integer, base::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " scale!{T<:Union{Complex{Float32},Complex{Float64}}}(X::Array{T<:Union{Complex{Float32},Complex{Float64}},N}, s::Real) at linalg/dense.jl:23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " searchsorted{T<:Real}(a::Range{T<:Real}, x::Real, o::Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}) at sort.jl:178                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " searchsortedfirst{T<:Integer}(a::Range{T<:Integer}, x::Real, o::Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}) at sort.jl:155                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " searchsortedfirst{T<:Real}(a::Range{T<:Real}, x::Real, o::Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}) at sort.jl:138                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \n",
       " searchsortedlast{T<:Integer}(a::Range{T<:Integer}, x::Real, o::Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}) at sort.jl:147                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              \n",
       " searchsortedlast{T<:Real}(a::Range{T<:Real}, x::Real, o::Union{Base.Order.ForwardOrdering,Base.Order.ReverseOrdering{Base.Order.ForwardOrdering}}) at sort.jl:129                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " setindex!{T}(A::Array{T,N}, x, i1::Real) at array.jl:313                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \n",
       " setindex!{T}(A::Array{T,N}, x, i1::Real, i2::Real, I::Real...) at array.jl:314                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " setindex!(S::SharedArray{T,N}, x, i::Real) at sharedarray.jl:359                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " sign(x::Real) at number.jl:26                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " signbit(x::Real) at number.jl:24                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     \n",
       " signif(x::Real, digits::Integer) at floatfuncs.jl:132                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \n",
       " signif(x::Real, digits::Integer, base::Integer) at floatfuncs.jl:132                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " sin(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " sind(x::Real) at special/trig.jl:289                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " sinh(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " sinpi{T<:Real}(x::T<:Real) at special/trig.jl:133                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " sleep(sec::Real) at stream.jl:695                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    \n",
       " sqrt(x::Real) at math.jl:146                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " tan(x::Real) at math.jl:139                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " tand(x::Real) at special/trig.jl:347                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " tanh(x::Real) at math.jl:115                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " trunc(x::Real, digits::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \n",
       " trunc(x::Real, digits::Integer, base::Integer) at floatfuncs.jl:148                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \n",
       " typemax{T<:Real}(x::T<:Real) at float.jl:399                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " typemin{T<:Real}(x::T<:Real) at float.jl:398                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " vecnorm(x::Number, p::Real)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          \n",
       " vecnorm(A::SparseMatrixCSC{Tv,Ti<:Integer}, p::Real) at sparse/linalg.jl:480                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \n",
       " vecnorm(itr, p::Real) at linalg/generic.jl:173                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \n",
       " watch_file(s::AbstractString, timeout_s::Real) at poll.jl:364                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        \n",
       " zeta(x::Real) at special/gamma.jl:463                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "
      ]
     },
     "execution_count": 159,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "methodswith(Real)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "4-element Array{Method,1}:<ul><li> +(x::<b>Real</b>, z::<b>Complex{Bool}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L132\" target=\"_blank\">complex.jl:132</a><li> +(z::<b>Complex{Bool}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L133\" target=\"_blank\">complex.jl:133</a><li> +(x::<b>Real</b>, z::<b>Complex{T<:Real}</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L144\" target=\"_blank\">complex.jl:144</a><li> +(z::<b>Complex{T<:Real}</b>, x::<b>Real</b>) at <a href=\"https://github.com/JuliaLang/julia/tree/2ac304dfba75fad148d4070ef4f8a2e400c305bb/base/complex.jl#L145\" target=\"_blank\">complex.jl:145</a></ul>"
      ],
      "text/plain": [
       "4-element Array{Method,1}:\n",
       " +(x::Real, z::Complex{Bool}) at complex.jl:132   \n",
       " +(z::Complex{Bool}, x::Real) at complex.jl:133   \n",
       " +(x::Real, z::Complex{T<:Real}) at complex.jl:144\n",
       " +(z::Complex{T<:Real}, x::Real) at complex.jl:145"
      ]
     },
     "execution_count": 160,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "methodswith(Real, +)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0x489bea67662baecd"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "object_id(+)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Core"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@which getfield"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "getfield(value, name::Symbol)\n",
       "\\end{verbatim}\n",
       "Extract a named field from a \\texttt{value} of composite type. The syntax \\texttt{a.b} calls \\texttt{getfield(a, :b)}, and the syntax \\texttt{a.(b)} calls \\texttt{getfield(a, b)}.\n"
      ],
      "text/markdown": [
       "```\n",
       "getfield(value, name::Symbol)\n",
       "```\n",
       "\n",
       "Extract a named field from a `value` of composite type. The syntax `a.b` calls `getfield(a, :b)`, and the syntax `a.(b)` calls `getfield(a, b)`.\n"
      ],
      "text/plain": [
       "```\n",
       "getfield(value, name::Symbol)\n",
       "```\n",
       "\n",
       "Extract a named field from a `value` of composite type. The syntax `a.b` calls `getfield(a, :b)`, and the syntax `a.(b)` calls `getfield(a, b)`.\n"
      ]
     },
     "execution_count": 181,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc getfield"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "type Experiment\n",
    "    a::Int64\n",
    "    b::Function\n",
    "    c::AbstractString\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Experiment(100,+,\"A String\")"
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expm = Experiment(100, +, \"A String\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"A String\""
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expm.(:c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"A String\""
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expm.c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"A String\""
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "symbolc = \"c\"\n",
    "expm.(symbol(symbolc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Int64,1}:\n",
       "  0\n",
       "  8\n",
       " 16"
      ]
     },
     "execution_count": 168,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fieldoffsets(Experiment)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "structinfo (generic function with 1 method)"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "structinfo(T) = [zip(fieldoffsets(T),fieldnames(T),T.types)...]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3-element Array{Tuple{Int64,Symbol,DataType},1}:\n",
       " (0,:a,Int64)          \n",
       " (8,:b,Function)       \n",
       " (16,:c,AbstractString)"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "structinfo(Experiment)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 171,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expm.b(1, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "method_exists(+, Tuple{Real})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "applicable(+, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "applicable(+, \"1\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "invoke(f, (types...), args...)\n",
       "\\end{verbatim}\n",
       "Invoke a method for the given generic function matching the specified types (as a tuple), on the specified arguments. The arguments must be compatible with the specified types. This allows invoking a method other than the most specific matching method, which is useful when the behavior of a more general definition is explicitly needed (often as part of the implementation of a more specific method of the same function).\n"
      ],
      "text/markdown": [
       "```\n",
       "invoke(f, (types...), args...)\n",
       "```\n",
       "\n",
       "Invoke a method for the given generic function matching the specified types (as a tuple), on the specified arguments. The arguments must be compatible with the specified types. This allows invoking a method other than the most specific matching method, which is useful when the behavior of a more general definition is explicitly needed (often as part of the implementation of a more specific method of the same function).\n"
      ],
      "text/plain": [
       "```\n",
       "invoke(f, (types...), args...)\n",
       "```\n",
       "\n",
       "Invoke a method for the given generic function matching the specified types (as a tuple), on the specified arguments. The arguments must be compatible with the specified types. This allows invoking a method other than the most specific matching method, which is useful when the behavior of a more general definition is explicitly needed (often as part of the implementation of a more specific method of the same function).\n"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc invoke"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.0"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "invoke(+, (Float64, Float64), 1.0, 1.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[1:5;] |> x->x.^2 |> sum |> inv == inv(sum([1:5;].^2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "call(x, args...)\n",
       "\\end{verbatim}\n",
       "If \\texttt{x} is not a \\texttt{Function}, then \\texttt{x(args...)} is equivalent to \\texttt{call(x, args...)}. This means that function-like behavior can be added to any type by defining new \\texttt{call} methods.\n"
      ],
      "text/markdown": [
       "```\n",
       "call(x, args...)\n",
       "```\n",
       "\n",
       "If `x` is not a `Function`, then `x(args...)` is equivalent to `call(x, args...)`. This means that function-like behavior can be added to any type by defining new `call` methods.\n"
      ],
      "text/plain": [
       "```\n",
       "call(x, args...)\n",
       "```\n",
       "\n",
       "If `x` is not a `Function`, then `x(args...)` is equivalent to `call(x, args...)`. This means that function-like behavior can be added to any type by defining new `call` methods.\n"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc call"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "call (generic function with 1087 methods)"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "call(m::Experiment, s::AbstractString) = parse(s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "123"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expm(\"123\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "@gensym\n",
       "\\end{verbatim}\n",
       "Generates a gensym symbol for a variable. For example, \\texttt{@gensym x y} is transformed into \\texttt{x = gensym(\"x\"); y = gensym(\"y\")}.\n"
      ],
      "text/markdown": [
       "```\n",
       "@gensym\n",
       "```\n",
       "\n",
       "Generates a gensym symbol for a variable. For example, `@gensym x y` is transformed into `x = gensym(\"x\"); y = gensym(\"y\")`.\n"
      ],
      "text/plain": [
       "```\n",
       "@gensym\n",
       "```\n",
       "\n",
       "Generates a gensym symbol for a variable. For example, `@gensym x y` is transformed into `x = gensym(\"x\"); y = gensym(\"y\")`.\n"
      ]
     },
     "execution_count": 184,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc @gensym"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "@elapsed\n",
       "\\end{verbatim}\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the number of seconds it took to execute as a floating-point number.\n"
      ],
      "text/markdown": [
       "```\n",
       "@elapsed\n",
       "```\n",
       "\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the number of seconds it took to execute as a floating-point number.\n"
      ],
      "text/plain": [
       "```\n",
       "@elapsed\n",
       "```\n",
       "\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the number of seconds it took to execute as a floating-point number.\n"
      ]
     },
     "execution_count": 195,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc @elapsed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.046363498"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@elapsed sleep(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "@allocated\n",
       "\\end{verbatim}\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the total number of bytes allocated during evaluation of the expression. Note: the expression is evaluated inside a local function, instead of the current context, in order to eliminate the effects of compilation, however, there still may be some allocations due to JIT compilation. This also makes the results inconsistent with the \\texttt{@time} macros, which do not try to adjust for the effects of compilation.\n"
      ],
      "text/markdown": [
       "```\n",
       "@allocated\n",
       "```\n",
       "\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the total number of bytes allocated during evaluation of the expression. Note: the expression is evaluated inside a local function, instead of the current context, in order to eliminate the effects of compilation, however, there still may be some allocations due to JIT compilation. This also makes the results inconsistent with the `@time` macros, which do not try to adjust for the effects of compilation.\n"
      ],
      "text/plain": [
       "```\n",
       "@allocated\n",
       "```\n",
       "\n",
       "A macro to evaluate an expression, discarding the resulting value, instead returning the total number of bytes allocated during evaluation of the expression. Note: the expression is evaluated inside a local function, instead of the current context, in order to eliminate the effects of compilation, however, there still may be some allocations due to JIT compilation. This also makes the results inconsistent with the `@time` macros, which do not try to adjust for the effects of compilation.\n"
      ]
     },
     "execution_count": 196,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc @allocated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "96"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@allocated [1, 2, 3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "80"
      ]
     },
     "execution_count": 188,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@allocated [1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@allocated 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8.048"
      ]
     },
     "execution_count": 194,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(@allocated(collect(range(0, 1000))) - @allocated([]))/1000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(\"/opt/homebrew-cask/Caskroom/julia/0.4.5/Julia-0.4.5.app/Contents/Resources/julia/bin/../share/julia/base/promotion.jl\",211)"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(ff, fl) = functionloc(+, (Real, Real))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# This file is a part of Julia. License is MIT: http://julialang.org/license\n",
      "\n",
      "## type join (closest common ancestor, or least upper bound) ##\n",
      "\n",
      "typejoin() = Bottom\n",
      "typejoin(t::ANY) = t\n",
      "typejoin(t::ANY, ts...) = typejoin(t, typejoin(ts...))\n",
      "function typejoin(a::ANY, b::ANY)\n",
      "    if isa(a,TypeConstructor); a = a.body; end\n",
      "    if isa(b,TypeConstructor); b = b.body; end\n",
      "    if a <: b\n",
      "        return b\n",
      "    elseif b <: a\n",
      "        return a\n",
      "    end\n",
      "    if isa(a,TypeVar)\n",
      "        return typejoin(a.ub, b)\n",
      "    end\n",
      "    if isa(b,TypeVar)\n",
      "        return typejoin(a, b.ub)\n",
      "    end\n",
      "    if isa(a,Union) || isa(b,Union)\n",
      "        u = Union{a, b}\n",
      "        if !isa(u,Union)\n",
      "            return u\n",
      "        end\n",
      "        return reduce(typejoin, Bottom, u.types)\n",
      "    end\n",
      "    if a <: Tuple\n",
      "        if !(b <: Tuple)\n",
      "            return Any\n",
      "        end\n",
      "        ap, bp = a.parameters, b.parameters\n",
      "        la = length(ap)::Int; lb = length(bp)::Int\n",
      "        if la==0 || lb==0\n",
      "            return Tuple\n",
      "        end\n",
      "        if la < lb\n",
      "            if isvarargtype(ap[la])\n",
      "                c = cell(la)\n",
      "                c[la] = Vararg{typejoin(ap[la].parameters[1], tailjoin(bp,la))}\n",
      "                n = la-1\n",
      "            else\n",
      "                c = cell(la+1)\n",
      "                c[la+1] = Vararg{tailjoin(bp,la+1)}\n",
      "                n = la\n",
      "            end\n",
      "        elseif lb < la\n",
      "            if isvarargtype(bp[lb])\n",
      "                c = cell(lb)\n",
      "                c[lb] = Vararg{typejoin(bp[lb].parameters[1], tailjoin(ap,lb))}\n",
      "                n = lb-1\n",
      "            else\n",
      "                c = cell(lb+1)\n",
      "                c[lb+1] = Vararg{tailjoin(ap,lb+1)}\n",
      "                n = lb\n",
      "            end\n",
      "        else\n",
      "            c = cell(la)\n",
      "            n = la\n",
      "        end\n",
      "        for i = 1:n\n",
      "            ai = ap[i]; bi = bp[i]\n",
      "            ci = typejoin(unwrapva(ai),unwrapva(bi))\n",
      "            c[i] = isvarargtype(ai) || isvarargtype(bi) ? Vararg{ci} : ci\n",
      "        end\n",
      "        return Tuple{c...}\n",
      "    elseif b <: Tuple\n",
      "        return Any\n",
      "    end\n",
      "    while !is(b,Any)\n",
      "        if a <: b.name.primary\n",
      "            while a.name !== b.name\n",
      "                a = super(a)\n",
      "            end\n",
      "            # join on parameters\n",
      "            n = length(a.parameters)\n",
      "            p = cell(n)\n",
      "            for i = 1:n\n",
      "                ai, bi = a.parameters[i], b.parameters[i]\n",
      "                if ai === bi || (isa(ai,Type) && isa(bi,Type) && typeseq(ai,bi))\n",
      "                    p[i] = ai\n",
      "                else\n",
      "                    p[i] = a.name.primary.parameters[i]\n",
      "                end\n",
      "            end\n",
      "            return a.name.primary{p...}\n",
      "        end\n",
      "        b = super(b)\n",
      "    end\n",
      "    return Any\n",
      "end\n",
      "\n",
      "# reduce typejoin over A[i:end]\n",
      "function tailjoin(A, i)\n",
      "    t = Bottom\n",
      "    for j = i:length(A)\n",
      "        t = typejoin(t, unwrapva(A[j]))\n",
      "    end\n",
      "    return t\n",
      "end\n",
      "\n",
      "## promotion mechanism ##\n",
      "\n",
      "promote_type()  = Bottom\n",
      "promote_type(T) = T\n",
      "promote_type(T, S, U, V...) = promote_type(T, promote_type(S, U, V...))\n",
      "\n",
      "promote_type(::Type{Bottom}, ::Type{Bottom}) = Bottom\n",
      "promote_type{T}(::Type{T}, ::Type{T}) = T\n",
      "promote_type{T}(::Type{T}, ::Type{Bottom}) = T\n",
      "promote_type{T}(::Type{Bottom}, ::Type{T}) = T\n",
      "\n",
      "# Try promote_rule in both orders. Typically only one is defined,\n",
      "# and there is a fallback returning Bottom below, so the common case is\n",
      "#   promote_type(T, S) =>\n",
      "#   promote_result(T, S, result, Bottom) =>\n",
      "#   typejoin(result, Bottom) => result\n",
      "promote_type{T,S}(::Type{T}, ::Type{S}) =\n",
      "    promote_result(T, S, promote_rule(T,S), promote_rule(S,T))\n",
      "\n",
      "promote_rule(T, S) = Bottom\n",
      "\n",
      "promote_result(t,s,T,S) = promote_type(T,S)\n",
      "# If no promote_rule is defined, both directions give Bottom. In that\n",
      "# case use typejoin on the original types instead.\n",
      "promote_result{T,S}(::Type{T},::Type{S},::Type{Bottom},::Type{Bottom}) = typejoin(T, S)\n",
      "\n",
      "promote() = ()\n",
      "promote(x) = (x,)\n",
      "function promote{T,S}(x::T, y::S)\n",
      "    (convert(promote_type(T,S),x), convert(promote_type(T,S),y))\n",
      "end\n",
      "promote_typeof(x) = typeof(x)\n",
      "promote_typeof(x, xs...) = promote_type(typeof(x), promote_typeof(xs...))\n",
      "function promote(x, y, z)\n",
      "    (convert(promote_typeof(x,y,z), x),\n",
      "     convert(promote_typeof(x,y,z), y),\n",
      "     convert(promote_typeof(x,y,z), z))\n",
      "end\n",
      "function promote(x, y, zs...)\n",
      "    (convert(promote_typeof(x,y,zs...), x),\n",
      "     convert(promote_typeof(x,y,zs...), y),\n",
      "     convert(Tuple{Vararg{promote_typeof(x,y,zs...)}}, zs)...)\n",
      "end\n",
      "# TODO: promote{T}(x::T, ys::T...) here to catch all circularities?\n",
      "\n",
      "## promotions in arithmetic, etc. ##\n",
      "\n",
      "# Because of the promoting fallback definitions for Number, we need\n",
      "# a special case for undefined promote_rule on numeric types.\n",
      "# Otherwise, typejoin(T,S) is called (returning Number) so no conversion\n",
      "# happens, and +(promote(x,y)...) is called again, causing a stack\n",
      "# overflow.\n",
      "promote_result{T<:Number,S<:Number}(::Type{T},::Type{S},::Type{Bottom},::Type{Bottom}) =\n",
      "    promote_to_super(T, S, typejoin(T,S))\n",
      "\n",
      "# promote numeric types T and S to typejoin(T,S) if T<:S or S<:T\n",
      "# for example this makes promote_type(Integer,Real) == Real without\n",
      "# promoting arbitrary pairs of numeric types to Number.\n",
      "promote_to_super{T<:Number          }(::Type{T}, ::Type{T}, ::Type{T}) = T\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type{T}) = T\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type{S}) = S\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type) =\n",
      "    error(\"no promotion exists for \", T, \" and \", S)\n",
      "\n",
      "+(x::Number, y::Number) = +(promote(x,y)...)\n",
      "*(x::Number, y::Number) = *(promote(x,y)...)\n",
      "-(x::Number, y::Number) = -(promote(x,y)...)\n",
      "/(x::Number, y::Number) = /(promote(x,y)...)\n",
      "^(x::Number, y::Number) = ^(promote(x,y)...)\n",
      "\n",
      "fma(x::Number, y::Number, z::Number) = fma(promote(x,y,z)...)\n",
      "muladd(x::Number, y::Number, z::Number) = muladd(promote(x,y,z)...)\n",
      "\n",
      "(&)(x::Integer, y::Integer) = (&)(promote(x,y)...)\n",
      "(|)(x::Integer, y::Integer) = (|)(promote(x,y)...)\n",
      "($)(x::Integer, y::Integer) = ($)(promote(x,y)...)\n",
      "\n",
      "==(x::Number, y::Number) = (==)(promote(x,y)...)\n",
      "<( x::Real, y::Real)     = (< )(promote(x,y)...)\n",
      "<=(x::Real, y::Real)     = (<=)(promote(x,y)...)\n",
      "\n",
      "div(x::Real, y::Real) = div(promote(x,y)...)\n",
      "fld(x::Real, y::Real) = fld(promote(x,y)...)\n",
      "cld(x::Real, y::Real) = cld(promote(x,y)...)\n",
      "rem(x::Real, y::Real) = rem(promote(x,y)...)\n",
      "mod(x::Real, y::Real) = mod(promote(x,y)...)\n",
      "\n",
      "mod1(x::Real, y::Real) = mod1(promote(x,y)...)\n",
      "rem1(x::Real, y::Real) = rem1(promote(x,y)...)\n",
      "fld1(x::Real, y::Real) = fld1(promote(x,y)...)\n",
      "\n",
      "max(x::Real, y::Real) = max(promote(x,y)...)\n",
      "min(x::Real, y::Real) = min(promote(x,y)...)\n",
      "minmax(x::Real, y::Real) = minmax(promote(x, y)...)\n",
      "\n",
      "checked_add(x::Integer, y::Integer) = checked_add(promote(x,y)...)\n",
      "checked_sub(x::Integer, y::Integer) = checked_sub(promote(x,y)...)\n",
      "checked_mul(x::Integer, y::Integer) = checked_mul(promote(x,y)...)\n",
      "\n",
      "# \"Promotion\" that takes a Functor into account. You can override this\n",
      "# as needed. For example, if you need to provide a custom result type\n",
      "# for the multiplication of two types,\n",
      "#   promote_op{R<:MyType,S<:MyType}(::MulFun, ::Type{R}, ::Type{S}) = MyType{multype(R,S)}\n",
      "promote_op{R,S}(::Any, ::Type{R}, ::Type{S}) = promote_type(R, S)\n",
      "\n",
      "## catch-alls to prevent infinite recursion when definitions are missing ##\n",
      "\n",
      "no_op_err(name, T) = error(name,\" not defined for \",T)\n",
      "+{T<:Number}(x::T, y::T) = no_op_err(\"+\", T)\n",
      "*{T<:Number}(x::T, y::T) = no_op_err(\"*\", T)\n",
      "-{T<:Number}(x::T, y::T) = no_op_err(\"-\", T)\n",
      "/{T<:Number}(x::T, y::T) = no_op_err(\"/\", T)\n",
      "^{T<:Number}(x::T, y::T) = no_op_err(\"^\", T)\n",
      "\n",
      "fma{T<:Number}(x::T, y::T, z::T) = no_op_err(\"fma\", T)\n",
      "fma(x::Integer, y::Integer, z::Integer) = x*y+z\n",
      "muladd{T<:Number}(x::T, y::T, z::T) = x*y+z\n",
      "\n",
      "(&){T<:Integer}(x::T, y::T) = no_op_err(\"&\", T)\n",
      "(|){T<:Integer}(x::T, y::T) = no_op_err(\"|\", T)\n",
      "($){T<:Integer}(x::T, y::T) = no_op_err(\"\\$\", T)\n",
      "\n",
      "=={T<:Number}(x::T, y::T) = x === y\n",
      " <{T<:Real}(x::T, y::T) = no_op_err(\"<\" , T)\n",
      "<={T<:Real}(x::T, y::T) = no_op_err(\"<=\", T)\n",
      "\n",
      "div{T<:Real}(x::T, y::T) = no_op_err(\"div\", T)\n",
      "fld{T<:Real}(x::T, y::T) = no_op_err(\"fld\", T)\n",
      "cld{T<:Real}(x::T, y::T) = no_op_err(\"cld\", T)\n",
      "rem{T<:Real}(x::T, y::T) = no_op_err(\"rem\", T)\n",
      "mod{T<:Real}(x::T, y::T) = no_op_err(\"mod\", T)\n",
      "\n",
      "mod1{T<:Real}(x::T, y::T) = no_op_err(\"mod1\", T)\n",
      "rem1{T<:Real}(x::T, y::T) = no_op_err(\"rem1\", T)\n",
      "fld1{T<:Real}(x::T, y::T) = no_op_err(\"fld1\", T)\n",
      "\n",
      "max{T<:Real}(x::T, y::T) = ifelse(y < x, x, y)\n",
      "min{T<:Real}(x::T, y::T) = ifelse(y < x, y, x)\n",
      "minmax{T<:Real}(x::T, y::T) = y < x ? (y, x) : (x, y)\n",
      "\n",
      "checked_add{T<:Integer}(x::T, y::T) = no_op_err(\"checked_add\", T)\n",
      "checked_sub{T<:Integer}(x::T, y::T) = no_op_err(\"checked_sub\", T)\n",
      "checked_mul{T<:Integer}(x::T, y::T) = no_op_err(\"checked_mul\", T)\n"
     ]
    }
   ],
   "source": [
    "less(ff, fl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# This file is a part of Julia. License is MIT: http://julialang.org/license\n",
      "\n",
      "## type join (closest common ancestor, or least upper bound) ##\n",
      "\n",
      "typejoin() = Bottom\n",
      "typejoin(t::ANY) = t\n",
      "typejoin(t::ANY, ts...) = typejoin(t, typejoin(ts...))\n",
      "function typejoin(a::ANY, b::ANY)\n",
      "    if isa(a,TypeConstructor); a = a.body; end\n",
      "    if isa(b,TypeConstructor); b = b.body; end\n",
      "    if a <: b\n",
      "        return b\n",
      "    elseif b <: a\n",
      "        return a\n",
      "    end\n",
      "    if isa(a,TypeVar)\n",
      "        return typejoin(a.ub, b)\n",
      "    end\n",
      "    if isa(b,TypeVar)\n",
      "        return typejoin(a, b.ub)\n",
      "    end\n",
      "    if isa(a,Union) || isa(b,Union)\n",
      "        u = Union{a, b}\n",
      "        if !isa(u,Union)\n",
      "            return u\n",
      "        end\n",
      "        return reduce(typejoin, Bottom, u.types)\n",
      "    end\n",
      "    if a <: Tuple\n",
      "        if !(b <: Tuple)\n",
      "            return Any\n",
      "        end\n",
      "        ap, bp = a.parameters, b.parameters\n",
      "        la = length(ap)::Int; lb = length(bp)::Int\n",
      "        if la==0 || lb==0\n",
      "            return Tuple\n",
      "        end\n",
      "        if la < lb\n",
      "            if isvarargtype(ap[la])\n",
      "                c = cell(la)\n",
      "                c[la] = Vararg{typejoin(ap[la].parameters[1], tailjoin(bp,la))}\n",
      "                n = la-1\n",
      "            else\n",
      "                c = cell(la+1)\n",
      "                c[la+1] = Vararg{tailjoin(bp,la+1)}\n",
      "                n = la\n",
      "            end\n",
      "        elseif lb < la\n",
      "            if isvarargtype(bp[lb])\n",
      "                c = cell(lb)\n",
      "                c[lb] = Vararg{typejoin(bp[lb].parameters[1], tailjoin(ap,lb))}\n",
      "                n = lb-1\n",
      "            else\n",
      "                c = cell(lb+1)\n",
      "                c[lb+1] = Vararg{tailjoin(ap,lb+1)}\n",
      "                n = lb\n",
      "            end\n",
      "        else\n",
      "            c = cell(la)\n",
      "            n = la\n",
      "        end\n",
      "        for i = 1:n\n",
      "            ai = ap[i]; bi = bp[i]\n",
      "            ci = typejoin(unwrapva(ai),unwrapva(bi))\n",
      "            c[i] = isvarargtype(ai) || isvarargtype(bi) ? Vararg{ci} : ci\n",
      "        end\n",
      "        return Tuple{c...}\n",
      "    elseif b <: Tuple\n",
      "        return Any\n",
      "    end\n",
      "    while !is(b,Any)\n",
      "        if a <: b.name.primary\n",
      "            while a.name !== b.name\n",
      "                a = super(a)\n",
      "            end\n",
      "            # join on parameters\n",
      "            n = length(a.parameters)\n",
      "            p = cell(n)\n",
      "            for i = 1:n\n",
      "                ai, bi = a.parameters[i], b.parameters[i]\n",
      "                if ai === bi || (isa(ai,Type) && isa(bi,Type) && typeseq(ai,bi))\n",
      "                    p[i] = ai\n",
      "                else\n",
      "                    p[i] = a.name.primary.parameters[i]\n",
      "                end\n",
      "            end\n",
      "            return a.name.primary{p...}\n",
      "        end\n",
      "        b = super(b)\n",
      "    end\n",
      "    return Any\n",
      "end\n",
      "\n",
      "# reduce typejoin over A[i:end]\n",
      "function tailjoin(A, i)\n",
      "    t = Bottom\n",
      "    for j = i:length(A)\n",
      "        t = typejoin(t, unwrapva(A[j]))\n",
      "    end\n",
      "    return t\n",
      "end\n",
      "\n",
      "## promotion mechanism ##\n",
      "\n",
      "promote_type()  = Bottom\n",
      "promote_type(T) = T\n",
      "promote_type(T, S, U, V...) = promote_type(T, promote_type(S, U, V...))\n",
      "\n",
      "promote_type(::Type{Bottom}, ::Type{Bottom}) = Bottom\n",
      "promote_type{T}(::Type{T}, ::Type{T}) = T\n",
      "promote_type{T}(::Type{T}, ::Type{Bottom}) = T\n",
      "promote_type{T}(::Type{Bottom}, ::Type{T}) = T\n",
      "\n",
      "# Try promote_rule in both orders. Typically only one is defined,\n",
      "# and there is a fallback returning Bottom below, so the common case is\n",
      "#   promote_type(T, S) =>\n",
      "#   promote_result(T, S, result, Bottom) =>\n",
      "#   typejoin(result, Bottom) => result\n",
      "promote_type{T,S}(::Type{T}, ::Type{S}) =\n",
      "    promote_result(T, S, promote_rule(T,S), promote_rule(S,T))\n",
      "\n",
      "promote_rule(T, S) = Bottom\n",
      "\n",
      "promote_result(t,s,T,S) = promote_type(T,S)\n",
      "# If no promote_rule is defined, both directions give Bottom. In that\n",
      "# case use typejoin on the original types instead.\n",
      "promote_result{T,S}(::Type{T},::Type{S},::Type{Bottom},::Type{Bottom}) = typejoin(T, S)\n",
      "\n",
      "promote() = ()\n",
      "promote(x) = (x,)\n",
      "function promote{T,S}(x::T, y::S)\n",
      "    (convert(promote_type(T,S),x), convert(promote_type(T,S),y))\n",
      "end\n",
      "promote_typeof(x) = typeof(x)\n",
      "promote_typeof(x, xs...) = promote_type(typeof(x), promote_typeof(xs...))\n",
      "function promote(x, y, z)\n",
      "    (convert(promote_typeof(x,y,z), x),\n",
      "     convert(promote_typeof(x,y,z), y),\n",
      "     convert(promote_typeof(x,y,z), z))\n",
      "end\n",
      "function promote(x, y, zs...)\n",
      "    (convert(promote_typeof(x,y,zs...), x),\n",
      "     convert(promote_typeof(x,y,zs...), y),\n",
      "     convert(Tuple{Vararg{promote_typeof(x,y,zs...)}}, zs)...)\n",
      "end\n",
      "# TODO: promote{T}(x::T, ys::T...) here to catch all circularities?\n",
      "\n",
      "## promotions in arithmetic, etc. ##\n",
      "\n",
      "# Because of the promoting fallback definitions for Number, we need\n",
      "# a special case for undefined promote_rule on numeric types.\n",
      "# Otherwise, typejoin(T,S) is called (returning Number) so no conversion\n",
      "# happens, and +(promote(x,y)...) is called again, causing a stack\n",
      "# overflow.\n",
      "promote_result{T<:Number,S<:Number}(::Type{T},::Type{S},::Type{Bottom},::Type{Bottom}) =\n",
      "    promote_to_super(T, S, typejoin(T,S))\n",
      "\n",
      "# promote numeric types T and S to typejoin(T,S) if T<:S or S<:T\n",
      "# for example this makes promote_type(Integer,Real) == Real without\n",
      "# promoting arbitrary pairs of numeric types to Number.\n",
      "promote_to_super{T<:Number          }(::Type{T}, ::Type{T}, ::Type{T}) = T\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type{T}) = T\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type{S}) = S\n",
      "promote_to_super{T<:Number,S<:Number}(::Type{T}, ::Type{S}, ::Type) =\n",
      "    error(\"no promotion exists for \", T, \" and \", S)\n",
      "\n",
      "+(x::Number, y::Number) = +(promote(x,y)...)\n",
      "*(x::Number, y::Number) = *(promote(x,y)...)\n",
      "-(x::Number, y::Number) = -(promote(x,y)...)\n",
      "/(x::Number, y::Number) = /(promote(x,y)...)\n",
      "^(x::Number, y::Number) = ^(promote(x,y)...)\n",
      "\n",
      "fma(x::Number, y::Number, z::Number) = fma(promote(x,y,z)...)\n",
      "muladd(x::Number, y::Number, z::Number) = muladd(promote(x,y,z)...)\n",
      "\n",
      "(&)(x::Integer, y::Integer) = (&)(promote(x,y)...)\n",
      "(|)(x::Integer, y::Integer) = (|)(promote(x,y)...)\n",
      "($)(x::Integer, y::Integer) = ($)(promote(x,y)...)\n",
      "\n",
      "==(x::Number, y::Number) = (==)(promote(x,y)...)\n",
      "<( x::Real, y::Real)     = (< )(promote(x,y)...)\n",
      "<=(x::Real, y::Real)     = (<=)(promote(x,y)...)\n",
      "\n",
      "div(x::Real, y::Real) = div(promote(x,y)...)\n",
      "fld(x::Real, y::Real) = fld(promote(x,y)...)\n",
      "cld(x::Real, y::Real) = cld(promote(x,y)...)\n",
      "rem(x::Real, y::Real) = rem(promote(x,y)...)\n",
      "mod(x::Real, y::Real) = mod(promote(x,y)...)\n",
      "\n",
      "mod1(x::Real, y::Real) = mod1(promote(x,y)...)\n",
      "rem1(x::Real, y::Real) = rem1(promote(x,y)...)\n",
      "fld1(x::Real, y::Real) = fld1(promote(x,y)...)\n",
      "\n",
      "max(x::Real, y::Real) = max(promote(x,y)...)\n",
      "min(x::Real, y::Real) = min(promote(x,y)...)\n",
      "minmax(x::Real, y::Real) = minmax(promote(x, y)...)\n",
      "\n",
      "checked_add(x::Integer, y::Integer) = checked_add(promote(x,y)...)\n",
      "checked_sub(x::Integer, y::Integer) = checked_sub(promote(x,y)...)\n",
      "checked_mul(x::Integer, y::Integer) = checked_mul(promote(x,y)...)\n",
      "\n",
      "# \"Promotion\" that takes a Functor into account. You can override this\n",
      "# as needed. For example, if you need to provide a custom result type\n",
      "# for the multiplication of two types,\n",
      "#   promote_op{R<:MyType,S<:MyType}(::MulFun, ::Type{R}, ::Type{S}) = MyType{multype(R,S)}\n",
      "promote_op{R,S}(::Any, ::Type{R}, ::Type{S}) = promote_type(R, S)\n",
      "\n",
      "## catch-alls to prevent infinite recursion when definitions are missing ##\n",
      "\n",
      "no_op_err(name, T) = error(name,\" not defined for \",T)\n",
      "+{T<:Number}(x::T, y::T) = no_op_err(\"+\", T)\n",
      "*{T<:Number}(x::T, y::T) = no_op_err(\"*\", T)\n",
      "-{T<:Number}(x::T, y::T) = no_op_err(\"-\", T)\n",
      "/{T<:Number}(x::T, y::T) = no_op_err(\"/\", T)\n",
      "^{T<:Number}(x::T, y::T) = no_op_err(\"^\", T)\n",
      "\n",
      "fma{T<:Number}(x::T, y::T, z::T) = no_op_err(\"fma\", T)\n",
      "fma(x::Integer, y::Integer, z::Integer) = x*y+z\n",
      "muladd{T<:Number}(x::T, y::T, z::T) = x*y+z\n",
      "\n",
      "(&){T<:Integer}(x::T, y::T) = no_op_err(\"&\", T)\n",
      "(|){T<:Integer}(x::T, y::T) = no_op_err(\"|\", T)\n",
      "($){T<:Integer}(x::T, y::T) = no_op_err(\"\\$\", T)\n",
      "\n",
      "=={T<:Number}(x::T, y::T) = x === y\n",
      " <{T<:Real}(x::T, y::T) = no_op_err(\"<\" , T)\n",
      "<={T<:Real}(x::T, y::T) = no_op_err(\"<=\", T)\n",
      "\n",
      "div{T<:Real}(x::T, y::T) = no_op_err(\"div\", T)\n",
      "fld{T<:Real}(x::T, y::T) = no_op_err(\"fld\", T)\n",
      "cld{T<:Real}(x::T, y::T) = no_op_err(\"cld\", T)\n",
      "rem{T<:Real}(x::T, y::T) = no_op_err(\"rem\", T)\n",
      "mod{T<:Real}(x::T, y::T) = no_op_err(\"mod\", T)\n",
      "\n",
      "mod1{T<:Real}(x::T, y::T) = no_op_err(\"mod1\", T)\n",
      "rem1{T<:Real}(x::T, y::T) = no_op_err(\"rem1\", T)\n",
      "fld1{T<:Real}(x::T, y::T) = no_op_err(\"fld1\", T)\n",
      "\n",
      "max{T<:Real}(x::T, y::T) = ifelse(y < x, x, y)\n",
      "min{T<:Real}(x::T, y::T) = ifelse(y < x, y, x)\n",
      "minmax{T<:Real}(x::T, y::T) = y < x ? (y, x) : (x, y)\n",
      "\n",
      "checked_add{T<:Integer}(x::T, y::T) = no_op_err(\"checked_add\", T)\n",
      "checked_sub{T<:Integer}(x::T, y::T) = no_op_err(\"checked_sub\", T)\n",
      "checked_mul{T<:Integer}(x::T, y::T) = no_op_err(\"checked_mul\", T)\n"
     ]
    }
   ],
   "source": [
    "less(+, (Real, Real))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4-element Array{Any,1}:\n",
       " call(::Type{Experiment}, a::Int64, b::Function, c::AbstractString) at In[163]:2\n",
       " call(::Type{Experiment}, a, b, c) at In[163]:2                                 \n",
       " call{T}(::Type{T}, arg) at essentials.jl:56                                    \n",
       " call{T}(::Type{T}, args...) at essentials.jl:57                                "
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "methods(Experiment)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: could not find source file for function\nwhile loading In[205], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: could not find source file for function\nwhile loading In[205], in expression starting on line 1",
      "",
      " in less at interactiveutil.jl:76",
      " in less at interactiveutil.jl:75"
     ]
    }
   ],
   "source": [
    "less(Experiment, (Int64, Function, AbstractString))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(x + 3y)"
      ]
     },
     "execution_count": 208,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "expand(:(x + 3y))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       ":(af(3))"
      ]
     },
     "execution_count": 217,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function af(x)\n",
    "    x + 1\n",
    "end\n",
    "expand(:(af(3)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:(args::Any...)], Any[Any[Any[:args,:Any,0]],Any[],0,Any[]], :(begin  # strings/io.jl, line 104:\n",
       "        return (top(_apply))((top(getfield))(Base,:call),Base.sprint,(top(tuple))(Base.print_joined),args)\n",
       "    end))))"
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_lowered join([\"a\", \"b\"], \"#\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:x,:y], Any[Any[Any[:x,:Any,0],Any[:y,:Any,0]],Any[],0,Any[]], :(begin  # int.jl, line 8:\n",
       "        return (Base.box)(Base.Int,(Base.add_int)((Base.unbox)(Base.Int,x),(Base.unbox)(Base.Int,y)))\n",
       "    end))))"
      ]
     },
     "execution_count": 227,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_lowered 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:x], Any[Any[Any[:x,:Any,0]],Any[],0,Any[]], :(begin  # In[217], line 2:\n",
       "        return x + 1\n",
       "    end))))"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_lowered af(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:(args::Any...)], Any[Any[Any[:args,Tuple{Array{ASCIIString,1},ASCIIString},0],Any[symbol(\"##args#8826\"),Tuple{Array{ASCIIString,1},ASCIIString},0]],Any[],Any[],Any[]], :(begin  # strings/io.jl, line 104:\n",
       "        return (Base.sprint)(0,Base.print_joined,(top(getfield))(args::Tuple{Array{ASCIIString,1},ASCIIString},1)::Array{ASCIIString,1},(top(getfield))(args::Tuple{Array{ASCIIString,1},ASCIIString},2)::ASCIIString)::Union{ASCIIString,UTF8String}\n",
       "    end::Union{ASCIIString,UTF8String}))))"
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_typed join([\"a\", \"b\"], \"#\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:x,:y], Any[Any[Any[:x,Int64,0],Any[:y,Int64,0]],Any[],Any[],Any[]], :(begin  # int.jl, line 8:\n",
       "        return (Base.box)(Base.Int,(Base.add_int)(x::Int64,y::Int64))\n",
       "    end::Int64))))"
      ]
     },
     "execution_count": 232,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_typed 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 233,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1-element Array{Any,1}:\n",
       " :($(Expr(:lambda, Any[:x], Any[Any[Any[:x,Int64,0]],Any[],Any[],Any[]], :(begin  # In[217], line 2:\n",
       "        return (Base.box)(Base.Int,(Base.add_int)(x::Int64,1))\n",
       "    end::Int64))))"
      ]
     },
     "execution_count": 233,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@code_typed af(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 234,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variables:\n",
      "  args::Tuple{Array{ASCIIString,1},ASCIIString}\n",
      "  ##args#8826::Tuple{Array{ASCIIString,1},ASCIIString}\n",
      "\n",
      "Body:\n",
      "  begin  # strings/io.jl, line 104:\n",
      "      return (Base.sprint)(0,Base.print_joined,(top(getfield))(args::Tuple{Array{ASCIIString,1},ASCIIString},1)::Array{ASCIIString,1},(top(getfield))(args::Tuple{Array{ASCIIString,1},ASCIIString},2)::ASCIIString)::UNION{ASCIISTRING,UTF8STRING}\n",
      "  end::UNION{ASCIISTRING,UTF8STRING}\n"
     ]
    }
   ],
   "source": [
    "@code_warntype join([\"a\", \"b\"], \"#\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variables:\n",
      "  x::Int64\n",
      "  y::Int64\n",
      "\n",
      "Body:\n",
      "  begin  # int.jl, line 8:\n",
      "      return (Base.box)(Base.Int,(Base.add_int)(x::Int64,y::Int64))\n",
      "  end::Int64\n"
     ]
    }
   ],
   "source": [
    "@code_warntype 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variables:\n",
      "  x::Int64\n",
      "\n",
      "Body:\n",
      "  begin  # In[217], line 2:\n",
      "      return (Base.box)(Base.Int,(Base.add_int)(x::Int64,1))\n",
      "  end::Int64\n"
     ]
    }
   ],
   "source": [
    "@code_warntype af(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variables:\n",
      "  x::Int64\n",
      "  y::Int64\n",
      "\n",
      "Body:\n",
      "  begin  # int.jl, line 8:\n",
      "      return (Base.box)(Base.Int,(Base.add_int)(x::Int64,y::Int64))\n",
      "  end::Int64\n"
     ]
    }
   ],
   "source": [
    "@code_warntype (1 + 2 * af(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 240,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "define %jl_value_t* @julia_join_23846(%jl_value_t*, %jl_value_t**, i32) {\n",
      "ifcont:\n",
      "  %3 = alloca [7 x %jl_value_t*], align 8\n",
      "  %.sub = getelementptr inbounds [7 x %jl_value_t*]* %3, i64 0, i64 0\n",
      "  %4 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 2\n",
      "  %5 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 3\n",
      "  store %jl_value_t* inttoptr (i64 10 to %jl_value_t*), %jl_value_t** %.sub, align 8\n",
      "  %6 = load %jl_value_t*** @jl_pgcstack, align 8\n",
      "  %7 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 1\n",
      "  %.c = bitcast %jl_value_t** %6 to %jl_value_t*\n",
      "  store %jl_value_t* %.c, %jl_value_t** %7, align 8\n",
      "  store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8\n",
      "  store %jl_value_t* null, %jl_value_t** %4, align 8\n",
      "  store %jl_value_t* null, %jl_value_t** %5, align 8\n",
      "  %8 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 4\n",
      "  store %jl_value_t* null, %jl_value_t** %8, align 8\n",
      "  %9 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 5\n",
      "  store %jl_value_t* null, %jl_value_t** %9, align 8\n",
      "  %10 = getelementptr [7 x %jl_value_t*]* %3, i64 0, i64 6\n",
      "  store %jl_value_t* null, %jl_value_t** %10, align 8\n",
      "  %11 = call %jl_value_t* @jl_f_tuple(%jl_value_t* null, %jl_value_t** %1, i32 %2)\n",
      "  store %jl_value_t* %11, %jl_value_t** %4, align 8\n",
      "  %12 = load %jl_value_t** inttoptr (i64 4505050840 to %jl_value_t**), align 8\n",
      "  store %jl_value_t* %12, %jl_value_t** %5, align 8\n",
      "  %13 = load %jl_value_t** inttoptr (i64 4503813048 to %jl_value_t**), align 8\n",
      "  store %jl_value_t* %13, %jl_value_t** %8, align 8\n",
      "  %14 = load %jl_value_t** inttoptr (i64 4486815064 to %jl_value_t**), align 8\n",
      "  %15 = call %jl_value_t* @jl_gc_alloc_1w()\n",
      "  %16 = getelementptr inbounds %jl_value_t* %15, i64 -1, i32 0\n",
      "  store %jl_value_t* inttoptr (i64 4471812976 to %jl_value_t*), %jl_value_t** %16, align 8\n",
      "  %17 = getelementptr inbounds %jl_value_t* %15, i64 0, i32 0\n",
      "  store %jl_value_t* %14, %jl_value_t** %17, align 8\n",
      "  store %jl_value_t* %15, %jl_value_t** %9, align 8\n",
      "  %18 = load %jl_value_t** %4, align 8\n",
      "  store %jl_value_t* %18, %jl_value_t** %10, align 8\n",
      "  %19 = call %jl_value_t* @jl_f_apply(%jl_value_t* null, %jl_value_t** %5, i32 4)\n",
      "  %20 = load %jl_value_t** %7, align 8\n",
      "  %21 = getelementptr inbounds %jl_value_t* %20, i64 0, i32 0\n",
      "  store %jl_value_t** %21, %jl_value_t*** @jl_pgcstack, align 8\n",
      "  ret %jl_value_t* %19\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "@code_llvm join([\"a\", \"b\"], \"#\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 241,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "define i64 @\"julia_+_23847\"(i64, i64) {\n",
      "top:\n",
      "  %2 = add i64 %1, %0\n",
      "  ret i64 %2\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "@code_llvm 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "define i64 @julia_af_23848(i64) {\n",
      "top:\n",
      "  %1 = add i64 %0, 1\n",
      "  ret i64 %1\n",
      "}\n"
     ]
    }
   ],
   "source": [
    "@code_llvm af(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "Filename: strings/io.jl\n",
      "Source line: 104\n",
      "\tpushq\t%rbp\n",
      "\tmovq\t%rsp, %rbp\n",
      "Source line: 104\n",
      "\tpushq\t%r14\n",
      "\tpushq\t%rbx\n",
      "\tsubq\t$64, %rsp\n",
      "\tmovq\t$10, -72(%rbp)\n",
      "\tmovabsq\t$jl_pgcstack, %r14\n",
      "\tmovq\t(%r14), %rax\n",
      "\tmovq\t%rax, -64(%rbp)\n",
      "\tleaq\t-72(%rbp), %rax\n",
      "\tmovq\t%rax, (%r14)\n",
      "\txorps\t%xmm0, %xmm0\n",
      "\tmovups\t%xmm0, -56(%rbp)\n",
      "\tmovups\t%xmm0, -40(%rbp)\n",
      "\tmovq\t$0, -24(%rbp)\n",
      "\tmovabsq\t$jl_f_tuple, %rax\n",
      "\txorl\t%edi, %edi\n",
      "\tcallq\t*%rax\n",
      "Source line: 104\n",
      "\tmovabsq\t$jl_gc_alloc_1w, %rcx\n",
      "\tmovabsq\t$4486815064, %rdx       ## imm = 0x10B6F5D58\n",
      "\tmovabsq\t$4503813048, %rsi       ## imm = 0x10C72BBB8\n",
      "\tmovabsq\t$4505050840, %rdi       ## imm = 0x10C859ED8\n",
      "Source line: 104\n",
      "\tmovq\t%rax, -56(%rbp)\n",
      "Source line: 104\n",
      "\tmovq\t(%rdi), %rax\n",
      "\tmovq\t%rax, -48(%rbp)\n",
      "\tmovq\t(%rsi), %rax\n",
      "\tmovq\t%rax, -40(%rbp)\n",
      "\tmovq\t(%rdx), %rbx\n",
      "\tcallq\t*%rcx\n",
      "Source line: 104\n",
      "\tleaq\t-48(%rbp), %rsi\n",
      "Source line: 104\n",
      "\tmovabsq\t$jl_f_apply, %rcx\n",
      "\tmovabsq\t$4471812976, %rdx       ## imm = 0x10A8A7370\n",
      "\tmovq\t%rdx, -8(%rax)\n",
      "\tmovq\t%rbx, (%rax)\n",
      "\tmovq\t%rax, -32(%rbp)\n",
      "\tmovq\t-56(%rbp), %rax\n",
      "\tmovq\t%rax, -24(%rbp)\n",
      "\txorl\t%edi, %edi\n",
      "\tmovl\t$4, %edx\n",
      "\tcallq\t*%rcx\n",
      "\tmovq\t-64(%rbp), %rcx\n",
      "\tmovq\t%rcx, (%r14)\n",
      "\taddq\t$64, %rsp\n",
      "\tpopq\t%rbx\n",
      "\tpopq\t%r14\n",
      "\tpopq\t%rbp\n",
      "\tret\n"
     ]
    }
   ],
   "source": [
    "@code_native join([\"a\", \"b\"], \"#\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "Filename: int.jl\n",
      "Source line: 8\n",
      "\tpushq\t%rbp\n",
      "\tmovq\t%rsp, %rbp\n",
      "Source line: 8\n",
      "\taddq\t%rsi, %rdi\n",
      "\tmovq\t%rdi, %rax\n",
      "\tpopq\t%rbp\n",
      "\tret\n"
     ]
    }
   ],
   "source": [
    "@code_native 1 + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t.section\t__TEXT,__text,regular,pure_instructions\n",
      "Filename: In[217]\n",
      "Source line: 2\n",
      "\tpushq\t%rbp\n",
      "\tmovq\t%rsp, %rbp\n",
      "Source line: 2\n",
      "\tleaq\t1(%rdi), %rax\n",
      "\tpopq\t%rbp\n",
      "\tret\n"
     ]
    }
   ],
   "source": [
    "@code_native af(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://en.wikibooks.org/wiki/Introducing_Julia/Metaprogramming"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 247,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "quote  # In[247], line 2:\n",
       "    a = 2 # In[247], line 3:\n",
       "    b = 3 # In[247], line 4:\n",
       "    c = 4 # In[247], line 5:\n",
       "    d = 5 # In[247], line 6:\n",
       "    e = sum([a,b,c,d])\n",
       "end"
      ]
     },
     "execution_count": 247,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "P = quote\n",
    "     a = 2\n",
    "     b = 3\n",
    "     c = 4\n",
    "     d = 5\n",
    "     e = sum([a,b,c,d])\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1:  # In[247], line 2:\n",
      "2: a = 2\n",
      "3:  # In[247], line 3:\n",
      "4: b = 3\n",
      "5:  # In[247], line 4:\n",
      "6: c = 4\n",
      "7:  # In[247], line 5:\n",
      "8: d = 5\n",
      "9:  # In[247], line 6:\n",
      "10: e = sum([a,b,c,d])\n"
     ]
    }
   ],
   "source": [
    "for (n, expr) in enumerate(P.args)\n",
    "  println(n, \": \", expr)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 249,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "quote  # In[249], line 1:\n",
       "    s = 1.3817732906760363\n",
       "end"
      ]
     },
     "execution_count": 249,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "quote s = $(sin(1) + cos(1))\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "macro p(n)\n",
    "    if typeof(n) == Expr \n",
    "       println(n.args)\n",
    "    end\n",
    "    eval(n)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 251,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@p 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 252,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Any[:-,:(3 + 4),:(((5 * 6) / 7) % 8)]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "2.7142857142857144"
      ]
     },
     "execution_count": 252,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@p 3 + 4 - 5 * 6 / 7 % 8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "macro f(x)\n",
    "    quote\n",
    "       s = 4\n",
    "       (s, $(esc(s)))\n",
    "    end\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4,0)"
      ]
     },
     "execution_count": 254,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = 0\n",
    "@f s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "..  esc(e::ANY)\n",
       "\n",
       "Only valid in the context of an ``Expr`` returned from a macro. Prevents the macro hygiene pass from turning embedded variables into gensym variables. See the :ref:`man-macros`\n",
       "section of the Metaprogramming chapter of the manual for more details and examples.\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "```rst\n",
       "..  esc(e::ANY)\n",
       "\n",
       "Only valid in the context of an ``Expr`` returned from a macro. Prevents the macro hygiene pass from turning embedded variables into gensym variables. See the :ref:`man-macros`\n",
       "section of the Metaprogramming chapter of the manual for more details and examples.\n",
       "```\n"
      ],
      "text/plain": [
       "```rst\n",
       "..  esc(e::ANY)\n",
       "\n",
       "Only valid in the context of an ``Expr`` returned from a macro. Prevents the macro hygiene pass from turning embedded variables into gensym variables. See the :ref:`man-macros`\n",
       "section of the Metaprogramming chapter of the manual for more details and examples.\n",
       "```\n"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc esc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\t......\n",
      "2\t......\n",
      "3\t......\n"
     ]
    }
   ],
   "source": [
    "macro dotimes(n, body)\n",
    "    quote\n",
    "        for i = 1:$(esc(n))\n",
    "            @printf \"%d\\t\" i\n",
    "            $(esc(body))\n",
    "        end\n",
    "    end\n",
    "end\n",
    "@dotimes 3 println(\"......\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "macro until(condition, block)\n",
    "    quote\n",
    "        while true\n",
    "            $(esc(block))\n",
    "            if $(esc(condition))\n",
    "                break\n",
    "            end\n",
    "        end\n",
    "    end\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "|1|2|3|4|5|6|7|8|9|10|"
     ]
    }
   ],
   "source": [
    "i = 0\n",
    "@printf \"|\"\n",
    "@until i == 10 begin\n",
    "    i += 1\n",
    "    @printf \"%d|\" i\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "No documentation found.\n",
       "\\texttt{Core.Intrinsics.box} is of type \\texttt{IntrinsicFunction}:\n",
       "\\textbf{Summary:}\n",
       "\\begin{verbatim}\n",
       "immutable IntrinsicFunction <: Any\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "No documentation found.\n",
       "\n",
       "`Core.Intrinsics.box` is of type `IntrinsicFunction`:\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "immutable IntrinsicFunction <: Any\n",
       "```\n"
      ],
      "text/plain": [
       "No documentation found.\n",
       "\n",
       "`Core.Intrinsics.box` is of type `IntrinsicFunction`:\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "immutable IntrinsicFunction <: Any\n",
       "```\n"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc Base.box"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: error compiling anonymous: box: wrong number of arguments\nwhile loading In[2], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: error compiling anonymous: box: wrong number of arguments\nwhile loading In[2], in expression starting on line 1",
      ""
     ]
    }
   ],
   "source": [
    "Base.box(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: UndefVarError: x not defined\nwhile loading In[4], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: UndefVarError: x not defined\nwhile loading In[4], in expression starting on line 1",
      "",
      " in anonymous at no file"
     ]
    }
   ],
   "source": [
    "(Base.box)(Base.Int,(Base.add_int)(x::Int64,y::Int64))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(Base.box)(Base.Int,(Base.add_int)(1,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "varx=1;vary=2;\n",
    "(Base.box)(Base.Int,(Base.add_int)(varx::Int64,vary::Int64))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(Base.add_int)(varx::Int64,vary::Int64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: box: argument is of incorrect size\nwhile loading In[11], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: box: argument is of incorrect size\nwhile loading In[11], in expression starting on line 1",
      "",
      " in anonymous at no file"
     ]
    }
   ],
   "source": [
    "(Base.box)(Base.Int8,(Base.add_int)(varx::Int64,vary::Int64))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: auto_unbox: unable to determine argument type\nwhile loading In[12], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: auto_unbox: unable to determine argument type\nwhile loading In[12], in expression starting on line 1",
      "",
      " in anonymous at no file"
     ]
    }
   ],
   "source": [
    "(Base.box)(Base.Int8,(Base.add_int)(varx,vary))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "At_mul_Bt\n",
      "Ac_mul_B\n",
      "At_mul_B\n",
      "A_mul_B!\n",
      "A_mul_Bt\n",
      "A_mul_Bc\n",
      "dot\n"
     ]
    }
   ],
   "source": [
    "apropos(\"⋅\") # \\cdot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 290,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "dot(x, y)\n",
       "⋅(x,y)\n",
       "\\end{verbatim}\n",
       "Compute the dot product. For complex vectors, the first vector is conjugated.\n"
      ],
      "text/markdown": [
       "```\n",
       "dot(x, y)\n",
       "⋅(x,y)\n",
       "```\n",
       "\n",
       "Compute the dot product. For complex vectors, the first vector is conjugated.\n"
      ],
      "text/plain": [
       "```\n",
       "dot(x, y)\n",
       "⋅(x,y)\n",
       "```\n",
       "\n",
       "Compute the dot product. For complex vectors, the first vector is conjugated.\n"
      ]
     },
     "execution_count": 290,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc dot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cross\n"
     ]
    }
   ],
   "source": [
    "apropos(\"×\") # \\times"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 291,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{verbatim}\n",
       "cross(x, y)\n",
       "×(x,y)\n",
       "\\end{verbatim}\n",
       "Compute the cross product of two 3-vectors.\n"
      ],
      "text/markdown": [
       "```\n",
       "cross(x, y)\n",
       "×(x,y)\n",
       "```\n",
       "\n",
       "Compute the cross product of two 3-vectors.\n"
      ],
      "text/plain": [
       "```\n",
       "cross(x, y)\n",
       "×(x,y)\n",
       "```\n",
       "\n",
       "Compute the cross product of two 3-vectors.\n"
      ]
     },
     "execution_count": 291,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc cross"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 292,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Base.LinAlg"
      ]
     },
     "execution_count": 292,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@which cross"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 293,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "apropos(\"∧\") # \\wedge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "false"
      ]
     },
     "execution_count": 294,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"∧\" == \"^\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 295,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1^2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 296,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"(1 ∧ 2)\""
      ]
     },
     "execution_count": 296,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1∧2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "UTF8String"
      ]
     },
     "execution_count": 297,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "typeof(1∧2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 298,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: UndefVarError: ∫2 not defined\nwhile loading In[298], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: UndefVarError: ∫2 not defined\nwhile loading In[298], in expression starting on line 1",
      ""
     ]
    }
   ],
   "source": [
    "1∫2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: syntax: \"∧\" is not a unary operator\nwhile loading In[299], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: syntax: \"∧\" is not a unary operator\nwhile loading In[299], in expression starting on line 1",
      ""
     ]
    }
   ],
   "source": [
    "∧2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 300,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "LoadError",
     "evalue": "LoadError: syntax: incomplete: premature end of input\nwhile loading In[300], in expression starting on line 1",
     "output_type": "error",
     "traceback": [
      "LoadError: syntax: incomplete: premature end of input\nwhile loading In[300], in expression starting on line 1",
      ""
     ]
    }
   ],
   "source": [
    "1∧"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Main"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@which ∧"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "No documentation found.\n",
       "\\texttt{∧} is a generic \\texttt{Function}.\n",
       "\\begin{verbatim}\n",
       "# 2 methods for generic function \"∧\":\n",
       "∧(a, b) at In[152]:2\n",
       "∧(a, b, c) at In[152]:3\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "No documentation found.\n",
       "\n",
       "`∧` is a generic `Function`.\n",
       "\n",
       "```julia\n",
       "# 2 methods for generic function \"∧\":\n",
       "∧(a, b) at In[152]:2\n",
       "∧(a, b, c) at In[152]:3\n",
       "```\n"
      ],
      "text/plain": [
       "No documentation found.\n",
       "\n",
       "`∧` is a generic `Function`.\n",
       "\n",
       "```julia\n",
       "# 2 methods for generic function \"∧\":\n",
       "∧(a, b) at In[152]:2\n",
       "∧(a, b, c) at In[152]:3\n",
       "```\n"
      ]
     },
     "execution_count": 306,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc Main.∧"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 310,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "No documentation found.\n",
       "\\texttt{Base.Operators} is of type \\texttt{Module}:\n",
       "\\textbf{Summary:}\n",
       "\\begin{verbatim}\n",
       "type Module <: Any\n",
       "\\end{verbatim}\n",
       "\\textbf{Fields:}\n",
       "\\begin{verbatim}\n",
       "name   :: Symbol\n",
       "parent :: Any\n",
       "\\end{verbatim}\n"
      ],
      "text/markdown": [
       "No documentation found.\n",
       "\n",
       "`Base.Operators` is of type `Module`:\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "type Module <: Any\n",
       "```\n",
       "\n",
       "**Fields:**\n",
       "\n",
       "```julia\n",
       "name   :: Symbol\n",
       "parent :: Any\n",
       "```\n"
      ],
      "text/plain": [
       "No documentation found.\n",
       "\n",
       "`Base.Operators` is of type `Module`:\n",
       "\n",
       "**Summary:**\n",
       "\n",
       "```julia\n",
       "type Module <: Any\n",
       "```\n",
       "\n",
       "**Fields:**\n",
       "\n",
       "```julia\n",
       "name   :: Symbol\n",
       "parent :: Any\n",
       "```\n"
      ]
     },
     "execution_count": 310,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "@doc Base.Operators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 313,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dot (generic function with 7 methods)"
      ]
     },
     "execution_count": 313,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Base.Operators.⋅"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "See [operator precedence table](https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm) in Julia source code."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```scheme\n",
    ";; Operator precedence table, lowest at top\n",
    "\n",
    ";; note: there are some strange-looking things in here because\n",
    ";; the way the lexer works, every prefix of an operator must also\n",
    ";; be an operator.\n",
    "(define prec-assignment\n",
    "  '(= := += -= *= /= //= .//= .*= ./= |\\\\=| |.\\\\=| ^= .^= ÷= .÷= %= .%= |\\|=| &= $= => <<= >>= >>>= ~ |.+=| |.-=|))\n",
    "(define prec-conditional '(?))\n",
    "(define prec-arrow       '(-- --> ← → ↔ ↚ ↛ ↠ ↣ ↦ ↮ ⇎ ⇏ ⇒ ⇔ ⇴ ⇶ ⇷ ⇸ ⇹ ⇺ ⇻ ⇼ ⇽ ⇾ ⇿ ⟵ ⟶ ⟷ ⟷ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿ ⤀ ⤁ ⤂ ⤃ ⤄ ⤅ ⤆ ⤇ ⤌ ⤍ ⤎ ⤏ ⤐ ⤑ ⤔ ⤕ ⤖ ⤗ ⤘ ⤝ ⤞ ⤟ ⤠ ⥄ ⥅ ⥆ ⥇ ⥈ ⥊ ⥋ ⥎ ⥐ ⥒ ⥓ ⥖ ⥗ ⥚ ⥛ ⥞ ⥟ ⥢ ⥤ ⥦ ⥧ ⥨ ⥩ ⥪ ⥫ ⥬ ⥭ ⥰ ⧴ ⬱ ⬰ ⬲ ⬳ ⬴ ⬵ ⬶ ⬷ ⬸ ⬹ ⬺ ⬻ ⬼ ⬽ ⬾ ⬿ ⭀ ⭁ ⭂ ⭃ ⭄ ⭇ ⭈ ⭉ ⭊ ⭋ ⭌ ￩ ￫))\n",
    "(define prec-lazy-or     '(|\\|\\||))\n",
    "(define prec-lazy-and    '(&&))\n",
    "(define prec-comparison\n",
    "  '(> < >= ≥ <= ≤ == === ≡ != ≠ !== ≢ |.>| |.<| |.>=| |.≥| |.<=| |.≤| |.==| |.!=| |.≠| |.=| |.!| |<:| |>:| ∈ ∉ ∋ ∌ ⊆ ⊈ ⊂ ⊄ ⊊ ∝ ∊ ∍ ∥ ∦ ∷ ∺ ∻ ∽ ∾ ≁ ≃ ≄ ≅ ≆ ≇ ≈ ≉ ≊ ≋ ≌ ≍ ≎ ≐ ≑ ≒ ≓ ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≣ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ ⊀ ⊁ ⊃ ⊅ ⊇ ⊉ ⊋ ⊏ ⊐ ⊑ ⊒ ⊜ ⊩ ⊬ ⊮ ⊰ ⊱ ⊲ ⊳ ⊴ ⊵ ⊶ ⊷ ⋍ ⋐ ⋑ ⋕ ⋖ ⋗ ⋘ ⋙ ⋚ ⋛ ⋜ ⋝ ⋞ ⋟ ⋠ ⋡ ⋢ ⋣ ⋤ ⋥ ⋦ ⋧ ⋨ ⋩ ⋪ ⋫ ⋬ ⋭ ⋲ ⋳ ⋴ ⋵ ⋶ ⋷ ⋸ ⋹ ⋺ ⋻ ⋼ ⋽ ⋾ ⋿ ⟈ ⟉ ⟒ ⦷ ⧀ ⧁ ⧡ ⧣ ⧤ ⧥ ⩦ ⩧ ⩪ ⩫ ⩬ ⩭ ⩮ ⩯ ⩰ ⩱ ⩲ ⩳ ⩴ ⩵ ⩶ ⩷ ⩸ ⩹ ⩺ ⩻ ⩼ ⩽ ⩾ ⩿ ⪀ ⪁ ⪂ ⪃ ⪄ ⪅ ⪆ ⪇ ⪈ ⪉ ⪊ ⪋ ⪌ ⪍ ⪎ ⪏ ⪐ ⪑ ⪒ ⪓ ⪔ ⪕ ⪖ ⪗ ⪘ ⪙ ⪚ ⪛ ⪜ ⪝ ⪞ ⪟ ⪠ ⪡ ⪢ ⪣ ⪤ ⪥ ⪦ ⪧ ⪨ ⪩ ⪪ ⪫ ⪬ ⪭ ⪮ ⪯ ⪰ ⪱ ⪲ ⪳ ⪴ ⪵ ⪶ ⪷ ⪸ ⪹ ⪺ ⪻ ⪼ ⪽ ⪾ ⪿ ⫀ ⫁ ⫂ ⫃ ⫄ ⫅ ⫆ ⫇ ⫈ ⫉ ⫊ ⫋ ⫌ ⫍ ⫎ ⫏ ⫐ ⫑ ⫒ ⫓ ⫔ ⫕ ⫖ ⫗ ⫘ ⫙ ⫷ ⫸ ⫹ ⫺ ⊢ ⊣)) ;; plus `in`\n",
    "(define prec-pipe        '(|\\|>| |<\\||))\n",
    "(define prec-colon       '(: |..|))\n",
    "(define prec-plus        '(+ - ⊕ ⊖ ⊞ ⊟ |.+| |.-| |++| |\\|| ∪ ∨ $ ⊔ ± ∓ ∔ ∸ ≂ ≏ ⊎ ⊻ ⊽ ⋎ ⋓ ⧺ ⧻ ⨈ ⨢ ⨣ ⨤ ⨥ ⨦ ⨧ ⨨ ⨩ ⨪ ⨫ ⨬ ⨭ ⨮ ⨹ ⨺ ⩁ ⩂ ⩅ ⩊ ⩌ ⩏ ⩐ ⩒ ⩔ ⩖ ⩗ ⩛ ⩝ ⩡ ⩢ ⩣))\n",
    "(define prec-bitshift    '(<< >> >>> |.<<| |.>>| |.>>>|))\n",
    "(define prec-times       '(* / |./| ÷ |.÷| % ⋅ ∘ × |.%| |.*| |\\\\| |.\\\\| & ∩ ∧ ⊗ ⊘ ⊙ ⊚ ⊛ ⊠ ⊡ ⊓ ∗ ∙ ∤ ⅋ ≀ ⊼ ⋄ ⋆ ⋇ ⋉ ⋊ ⋋ ⋌ ⋏ ⋒ ⟑ ⦸ ⦼ ⦾ ⦿ ⧶ ⧷ ⨇ ⨰ ⨱ ⨲ ⨳ ⨴ ⨵ ⨶ ⨷ ⨸ ⨻ ⨼ ⨽ ⩀ ⩃ ⩄ ⩋ ⩍ ⩎ ⩑ ⩓ ⩕ ⩘ ⩚ ⩜ ⩞ ⩟ ⩠ ⫛ ⊍ ▷ ⨝ ⟕ ⟖ ⟗))\n",
    "(define prec-rational    '(// .//))\n",
    "(define prec-power       '(^ |.^| ↑ ↓ ⇵ ⟰ ⟱ ⤈ ⤉ ⤊ ⤋ ⤒ ⤓ ⥉ ⥌ ⥍ ⥏ ⥑ ⥔ ⥕ ⥘ ⥙ ⥜ ⥝ ⥠ ⥡ ⥣ ⥥ ⥮ ⥯ ￪ ￬))\n",
    "(define prec-decl        '(|::|))\n",
    "(define prec-dot         '(|.|))\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From https://docs.python.org/2/library/operator.html#mapping-operators-to-functions :\n",
    "\n",
    "<table border=\"1\" class=\"docutils\">\n",
    "<colgroup>\n",
    "<col width=\"26%\">\n",
    "<col width=\"29%\">\n",
    "<col width=\"45%\">\n",
    "</colgroup>\n",
    "<thead valign=\"bottom\">\n",
    "<tr class=\"row-odd\"><th class=\"head\">Operation</th>\n",
    "<th class=\"head\">Syntax</th>\n",
    "<th class=\"head\">Function</th>\n",
    "</tr>\n",
    "</thead>\n",
    "<tbody valign=\"top\">\n",
    "<tr class=\"row-even\"><td>Addition</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">+</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">add(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Concatenation</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">seq1</span> <span class=\"pre\">+</span> <span class=\"pre\">seq2</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">concat(seq1,</span> <span class=\"pre\">seq2)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Containment Test</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">obj</span> <span class=\"pre\">in</span> <span class=\"pre\">seq</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">contains(seq,</span> <span class=\"pre\">obj)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Division</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">/</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">div(a,</span> <span class=\"pre\">b)</span></code> (without\n",
    "<code class=\"docutils literal\"><span class=\"pre\">__future__.division</span></code>)</td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Division</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">/</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">truediv(a,</span> <span class=\"pre\">b)</span></code> (with\n",
    "<code class=\"docutils literal\"><span class=\"pre\">__future__.division</span></code>)</td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Division</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">//</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">floordiv(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Bitwise And</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&amp;</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">and_(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Bitwise Exclusive Or</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">^</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">xor(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Bitwise Inversion</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">~</span> <span class=\"pre\">a</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">invert(a)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Bitwise Or</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">|</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">or_(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Exponentiation</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">**</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">pow(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Identity</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">is</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">is_(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Identity</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">is</span> <span class=\"pre\">not</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">is_not(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Indexed Assignment</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">obj[k]</span> <span class=\"pre\">=</span> <span class=\"pre\">v</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">setitem(obj,</span> <span class=\"pre\">k,</span> <span class=\"pre\">v)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Indexed Deletion</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">del</span> <span class=\"pre\">obj[k]</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">delitem(obj,</span> <span class=\"pre\">k)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Indexing</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">obj[k]</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">getitem(obj,</span> <span class=\"pre\">k)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Left Shift</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&lt;&lt;</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">lshift(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Modulo</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">%</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">mod(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Multiplication</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">*</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">mul(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Negation (Arithmetic)</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">-</span> <span class=\"pre\">a</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">neg(a)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Negation (Logical)</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">not</span> <span class=\"pre\">a</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">not_(a)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Positive</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">+</span> <span class=\"pre\">a</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">pos(a)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Right Shift</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&gt;&gt;</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">rshift(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Sequence Repetition</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">seq</span> <span class=\"pre\">*</span> <span class=\"pre\">i</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">repeat(seq,</span> <span class=\"pre\">i)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Slice Assignment</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">seq[i:j]</span> <span class=\"pre\">=</span> <span class=\"pre\">values</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">setitem(seq,</span> <span class=\"pre\">slice(i,</span> <span class=\"pre\">j),</span> <span class=\"pre\">values)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Slice Deletion</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">del</span> <span class=\"pre\">seq[i:j]</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">delitem(seq,</span> <span class=\"pre\">slice(i,</span> <span class=\"pre\">j))</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Slicing</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">seq[i:j]</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">getitem(seq,</span> <span class=\"pre\">slice(i,</span> <span class=\"pre\">j))</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>String Formatting</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">s</span> <span class=\"pre\">%</span> <span class=\"pre\">obj</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">mod(s,</span> <span class=\"pre\">obj)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Subtraction</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">-</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">sub(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Truth Test</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">obj</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">truth(obj)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Ordering</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&lt;</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">lt(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Ordering</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&lt;=</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">le(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Equality</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">==</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">eq(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Difference</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">!=</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">ne(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td>Ordering</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&gt;=</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">ge(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td>Ordering</td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">a</span> <span class=\"pre\">&gt;</span> <span class=\"pre\">b</span></code></td>\n",
    "<td><code class=\"docutils literal\"><span class=\"pre\">gt(a,</span> <span class=\"pre\">b)</span></code></td>\n",
    "</tr>\n",
    "</tbody>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using Base.Meta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "macro loop_ts(ex)\n",
    "    l, r = ex.args\n",
    "    @printf \"%s, %s, %s\" ex.head l r\n",
    "    idx =\n",
    "        if isexpr(l.args[2], :call)\n",
    "            filter(x -> isa(x, Symbol),\n",
    "            l.args[2].args[2:end])[1]\n",
    "        elseif isa(l.args[2], Symbol)\n",
    "            l.args[2]\n",
    "        end\n",
    "    offsets = extrema(vcat(get_offsets(l),\n",
    "    get_offsets(r)))\n",
    "    loopindex = :($(1 - offsets[1]):(length($(l.args[1]))\n",
    "    - $(offsets[2])))\n",
    "    quote\n",
    "        for $idx in $loopindex\n",
    "            $ex\n",
    "        end\n",
    "    end\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "get_offsets (generic function with 2 methods)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function get_offsets(ex_::Expr)\n",
    "    isexpr(ex_,:call) &&\n",
    "        return [[get_offsets(a)\n",
    "    for a in ex_.args[2:end]]...]\n",
    "        isexpr(ex_,:ref) &&\n",
    "            return get_offset_from_ref(ex_.args[2])\n",
    "    warning(\"Not expecting to be here\")\n",
    "    return Int64[]\n",
    "end\n",
    "\n",
    "get_offsets(x) = Int64[]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "get_offset_from_ref (generic function with 3 methods)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_offset_from_ref(s::Symbol) = 0\n",
    "get_offset_from_ref(x::Number) = x\n",
    "\n",
    "function get_offset_from_ref(ex_::Expr)\n",
    "    if isexpr(ex_,:call)\n",
    "        ex_.args[1] == :+ &&\n",
    "            return sum([get_offset_from_ref(a)\n",
    "    for a in ex_.args[2:end]])\n",
    "        ex_.args[1] == :- &&\n",
    "            return (get_offset_from_ref(ex_.args[2])\n",
    "                - sum([get_offset_from_ref(a)\n",
    "                    for a in ex_.args[3:end]]))\n",
    "    end\n",
    "    warning(\"Didn’t expect to get here\")\n",
    "    return(0)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "y[t + 1], 0.8 * y[t] + 0.02 * y[t - 2] + e[t + 1]"
     ]
    }
   ],
   "source": [
    "y = zeros(500)\n",
    "e = randn(500)\n",
    "@loop_ts y[t+1] = 0.8y[t] + 0.02y[t-2] + e[t+1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.1795152868696506"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[500]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=, y[t + 1], 0.8 * y[t] + 0.02 * y[t - 2] + e[t + 1]"
     ]
    },
    {
     "data": {
      "text/plain": [
       "quote  # In[29], line 16:\n",
       "    for #92#t = 3:length(y) - 1 # In[29], line 17:\n",
       "        y[#92#t + 1] = 0.8 * y[#92#t] + 0.02 * y[#92#t - 2] + e[#92#t + 1]\n",
       "    end\n",
       "end"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "macroexpand(:(@loop_ts y[t+1] = 0.8y[t] + 0.02y[t-2] + e[t+1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.4.5",
   "language": "julia",
   "name": "julia-0.4"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.4.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
